Browse Source

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}")
pull/320/head
Marc B 7 years ago
committed by Brad King
parent
commit
df535ad846
  1. 1
      Help/manual/cmake-variables.7.rst
  2. 3
      Help/prop_tgt/FOLDER.rst
  3. 5
      Help/release/dev/variable-CMAKE_FOLDER.rst
  4. 7
      Help/variable/CMAKE_FOLDER.rst
  5. 1
      Source/cmTarget.cxx

1
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

3
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.

5
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.

7
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.

1
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.

Loading…
Cancel
Save