summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-06-06 12:41:31 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-06-06 12:41:58 (GMT)
commit97328b05c3ae9326ca8a02fb0213efb961ca92f4 (patch)
tree50ed6f217a8081aa44823b1d5d79d95efeae41de
parent2f657e448b293706055e237c449591e70c542a3c (diff)
parent2449c04d8d0e6d354df969573ca62cd5709f0822 (diff)
downloadCMake-97328b05c3ae9326ca8a02fb0213efb961ca92f4.zip
CMake-97328b05c3ae9326ca8a02fb0213efb961ca92f4.tar.gz
CMake-97328b05c3ae9326ca8a02fb0213efb961ca92f4.tar.bz2
Merge topic 'doc-add_subdirectory-EXCLUDE_FROM_ALL' into release-3.30
2449c04d8d Help: improve docs for the EXCLUDE_FROM_ALL directory property Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !9497
-rw-r--r--Help/command/add_subdirectory.rst17
-rw-r--r--Help/prop_dir/EXCLUDE_FROM_ALL.rst27
-rw-r--r--Modules/FetchContent.cmake4
3 files changed, 30 insertions, 18 deletions
diff --git a/Help/command/add_subdirectory.rst b/Help/command/add_subdirectory.rst
index ae063e6..b5fa459 100644
--- a/Help/command/add_subdirectory.rst
+++ b/Help/command/add_subdirectory.rst
@@ -20,19 +20,10 @@ typical usage). The ``CMakeLists.txt`` file in the specified source
directory will be processed immediately by CMake before processing in
the current input file continues beyond this command.
-If the ``EXCLUDE_FROM_ALL`` argument is provided then targets in the
-subdirectory will not be included in the ``ALL`` target of the parent
-directory by default, and will be excluded from IDE project files.
-Users must explicitly build targets in the subdirectory. This is
-meant for use when the subdirectory contains a separate part of the
-project that is useful but not necessary, such as a set of examples.
-Typically the subdirectory should contain its own :command:`project`
-command invocation so that a full build system will be generated in the
-subdirectory (such as a Visual Studio IDE solution file). Note that
-inter-target dependencies supersede this exclusion. If a target built by
-the parent project depends on a target in the subdirectory, the dependee
-target will be included in the parent project build system to satisfy
-the dependency.
+If the ``EXCLUDE_FROM_ALL`` argument is provided then the
+:prop_dir:`EXCLUDE_FROM_ALL` property will be set on the added directory.
+This will exclude the directory from a default build. See the directory
+property :prop_dir:`EXCLUDE_FROM_ALL` for full details.
.. versionadded:: 3.25
If the ``SYSTEM`` argument is provided, the :prop_dir:`SYSTEM` directory
diff --git a/Help/prop_dir/EXCLUDE_FROM_ALL.rst b/Help/prop_dir/EXCLUDE_FROM_ALL.rst
index 8e3cca0..1adb50e 100644
--- a/Help/prop_dir/EXCLUDE_FROM_ALL.rst
+++ b/Help/prop_dir/EXCLUDE_FROM_ALL.rst
@@ -8,6 +8,27 @@ subdirectory by default. This does not affect the "all" target of the
subdirectory itself. Running e.g. ``make`` inside the subdirectory will
still build its targets.
-If the :prop_tgt:`EXCLUDE_FROM_ALL` target property is set on a target
-then its value determines whether the target is included in the "all"
-target of this directory and its ancestors.
+``EXCLUDE_FROM_ALL`` is meant for when the subdirectory contains
+a separate part of the project that is useful, but not necessary,
+such as a set of examples, or e.g. an integrated 3rd party library.
+Typically the subdirectory should contain its own :command:`project`
+command invocation so that a full build system will be generated in the
+subdirectory (such as a Visual Studio IDE solution file). Note that
+inter-target dependencies supersede this exclusion. If a target built by
+the parent project depends on a target in the subdirectory, the dependee
+target will be included in the parent project build system to satisfy
+the dependency.
+
+If the ``EXCLUDE_FROM_ALL`` argument is provided, it has the following effects:
+
+* Targets defined in the subdirectory or below will not be
+ included in the ``ALL`` target of the parent directory.
+ Those targets must be built explicitly by the user,
+ or be a dependency of another target that will be built.
+* Targets defined in the subdirectory or below will be
+ excluded from IDE project files.
+* Any install rules defined in the subdirectory or below will
+ be ignored when installing the parent directory.
+
+Note that these effects are not the same as those for the
+:prop_tgt:`EXCLUDE_FROM_ALL` target property.
diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake
index 01c9877..0763f54 100644
--- a/Modules/FetchContent.cmake
+++ b/Modules/FetchContent.cmake
@@ -232,8 +232,8 @@ Commands
If the ``EXCLUDE_FROM_ALL`` argument is provided, then targets in the
subdirectory added by :command:`FetchContent_MakeAvailable` will not be
included in the ``ALL`` target by default, and may be excluded from IDE
- project files. See the :command:`add_subdirectory` ``EXCLUDE_FROM_ALL``
- argument documentation for a more detailed discussion of the effects.
+ project files. See the documentation for the directory property
+ :prop_dir:`EXCLUDE_FROM_ALL` for a detailed discussion of the effects.
.. command:: FetchContent_MakeAvailable