Merge topic 'build-graph-opt-docs' into release-4.1

fac5e622b7 Help/OPTIMIZE_DEPENDENCIES: xref with CMP0154 documentation
03f5ffa2ca Help/OPTIMIZE_DEPENDENCIES: move period outside of parenthetical

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !11275
This commit is contained in:
Brad King
2025-10-02 17:56:13 +00:00
committed by Kitware Robot
2 changed files with 6 additions and 3 deletions

View File

@@ -20,7 +20,8 @@ their own target by default. Generated public headers must be specified
as members of a ``PUBLIC`` (or ``INTERFACE``) ``FILE_SET``, typically of
type ``HEADERS``. With this information, :ref:`Ninja Generators` may omit
the above-mentioned conservative dependencies and produce more efficient
build graphs.
build graphs. Dependents to such targets may also prune dependencies to such
targets when using the :prop_tgt:`OPTIMIZE_DEPENDENCIES` target property.
Additionally, if the custom command's output is a member of a file set of type
``CXX_MODULES``, it will additionally not be required to exist before

View File

@@ -21,13 +21,15 @@ any of the following criteria:
* The dependency has any ``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` custom
commands associated with it.
* The dependency contains any source files that were generated by a custom
command.
command. However, if :policy:`CMP0154` is `NEW` for the dependency and it
uses :ref:`File Sets`, only source files that are not in a ``PUBLIC``,
``INTERFACE``, or of type ``CXX_MODULES`` are considered.
* The dependency contains any languages which produce side effects that are
relevant to the library. Currently, all languages except C, C++, Objective-C,
Objective-C++, assembly, and CUDA are assumed to produce side effects.
However, side effects from one language are assumed not to be relevant to
another (for example, a Fortran library is assumed to not have any side
effects that are relevant for a Swift library.)
effects that are relevant for a Swift library).
As an example, assume you have a static Fortran library which depends on a
static C library, which in turn depends on a static Fortran library. The