소스 검색

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 <[email protected]>
Merge-request: !9497
Brad King 1 년 전
부모
커밋
97328b05c3
3개의 변경된 파일30개의 추가작업 그리고 18개의 파일을 삭제
  1. 4 13
      Help/command/add_subdirectory.rst
  2. 24 3
      Help/prop_dir/EXCLUDE_FROM_ALL.rst
  3. 2 2
      Modules/FetchContent.cmake

+ 4 - 13
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

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

+ 2 - 2
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