From df535ad846f5a25cd0795ce099a8604149bbf748 Mon Sep 17 00:00:00 2001 From: Marc B Date: Wed, 28 Mar 2018 00:53:18 +0200 Subject: 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}") --- Help/manual/cmake-variables.7.rst | 1 + Help/prop_tgt/FOLDER.rst | 3 +++ Help/release/dev/variable-CMAKE_FOLDER.rst | 5 +++++ Help/variable/CMAKE_FOLDER.rst | 7 +++++++ Source/cmTarget.cxx | 1 + 5 files changed, 17 insertions(+) create mode 100644 Help/release/dev/variable-CMAKE_FOLDER.rst create mode 100644 Help/variable/CMAKE_FOLDER.rst 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. -- cgit v0.12