summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc B <cmake.ichbinsauch@recursor.net>2018-03-27 22:53:18 (GMT)
committerBrad King <brad.king@kitware.com>2018-03-29 17:19:13 (GMT)
commitdf535ad846f5a25cd0795ce099a8604149bbf748 (patch)
tree400c5b96c50f643fae4bc4ccce96a39e48671c47
parent6792c7787aedc0fb2a32b6ca563917f7447f2e80 (diff)
downloadCMake-df535ad846f5a25cd0795ce099a8604149bbf748.zip
CMake-df535ad846f5a25cd0795ce099a8604149bbf748.tar.gz
CMake-df535ad846f5a25cd0795ce099a8604149bbf748.tar.bz2
Add CMAKE_FOLDER variable to initialize FOLDER target property
This can be used for example to organize all following targets into one Visual Studio folder: set(CMAKE_FOLDER Libraries) add_subdirectory(libA) add_subdirectory(libB) set(CMAKE_FOLDER Executables) add_subdirectory(progA) Another possibility is using the current directory name for all following targets in subdirectories: get_filename_component(dirname "${CMAKE_CURRENT_SOURCE_DIR}" NAME) string(APPEND CMAKE_FOLDER "/${dirname}")
-rw-r--r--Help/manual/cmake-variables.7.rst1
-rw-r--r--Help/prop_tgt/FOLDER.rst3
-rw-r--r--Help/release/dev/variable-CMAKE_FOLDER.rst5
-rw-r--r--Help/variable/CMAKE_FOLDER.rst7
-rw-r--r--Source/cmTarget.cxx1
5 files changed, 17 insertions, 0 deletions
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 0cb90d4..652dab8 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -305,6 +305,7 @@ Variables that Control the Build
/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG
/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT
/variable/CMAKE_EXE_LINKER_FLAGS_INIT
+ /variable/CMAKE_FOLDER
/variable/CMAKE_Fortran_FORMAT
/variable/CMAKE_Fortran_MODULE_DIRECTORY
/variable/CMAKE_GNUtoMS
diff --git a/Help/prop_tgt/FOLDER.rst b/Help/prop_tgt/FOLDER.rst
index bfe4e8e..0121125 100644
--- a/Help/prop_tgt/FOLDER.rst
+++ b/Help/prop_tgt/FOLDER.rst
@@ -8,3 +8,6 @@ IDEs like Visual Studio. Targets with the same FOLDER property value
will appear next to each other in a folder of that name. To nest
folders, use FOLDER values such as 'GUI/Dialogs' with '/' characters
separating folder levels.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_FOLDER` if it is set when a target is created.
diff --git a/Help/release/dev/variable-CMAKE_FOLDER.rst b/Help/release/dev/variable-CMAKE_FOLDER.rst
new file mode 100644
index 0000000..8064edd
--- /dev/null
+++ b/Help/release/dev/variable-CMAKE_FOLDER.rst
@@ -0,0 +1,5 @@
+variable-CMAKE_FOLDER
+---------------------
+
+* The :variable:`CMAKE_FOLDER` variable was added to initialize the
+ :prop_tgt:`FOLDER` property on all targets.
diff --git a/Help/variable/CMAKE_FOLDER.rst b/Help/variable/CMAKE_FOLDER.rst
new file mode 100644
index 0000000..50a2b88
--- /dev/null
+++ b/Help/variable/CMAKE_FOLDER.rst
@@ -0,0 +1,7 @@
+CMAKE_FOLDER
+------------
+
+Set the folder name. Use to organize targets in an IDE.
+
+This variable is used to initialize the :prop_tgt:`FOLDER` property on all the
+targets. See that target property for additional information.
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 6137223..b88d517f 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -275,6 +275,7 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
this->SetPropertyDefault("CUDA_SEPARABLE_COMPILATION", nullptr);
this->SetPropertyDefault("LINK_SEARCH_START_STATIC", nullptr);
this->SetPropertyDefault("LINK_SEARCH_END_STATIC", nullptr);
+ this->SetPropertyDefault("FOLDER", nullptr);
}
// Collect the set of configuration types.