Merge topic 'doc-transitive-properties'
c3c00460b2 Help: Clarify TARGET_PROPERTY genex evaluation of transitive properties
9ec61c72e3 Help: Add intro text to cmake-buildsystem(7) build properties sections
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9499
diff --git a/Help/manual/cmake-buildsystem.7.rst b/Help/manual/cmake-buildsystem.7.rst
index acb1ed7..93d55c7 100644
--- a/Help/manual/cmake-buildsystem.7.rst
+++ b/Help/manual/cmake-buildsystem.7.rst
@@ -314,6 +314,9 @@
Target Compile Properties
^^^^^^^^^^^^^^^^^^^^^^^^^
+These represent the `build specification <Target Build Specification_>`_
+for compiling a target.
+
:prop_tgt:`COMPILE_DEFINITIONS`
List of compile definitions for compiling sources in the target.
These are passed to the compiler with ``-D`` flags, or equivalent,
@@ -378,6 +381,9 @@
Target Link Properties
^^^^^^^^^^^^^^^^^^^^^^
+These represent the `build specification <Target Build Specification_>`_
+for linking a target.
+
:prop_tgt:`LINK_LIBRARIES`
List of link libraries for linking the target, if it is an executable,
shared library, or module library. Entries for `Normal Libraries`_ are
@@ -510,6 +516,9 @@
Transitive Compile Properties
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+These represent `usage requirements <Target Usage Requirements_>`_ for
+compiling consumers.
+
:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS`
List of compile definitions for compiling sources in the target's consumers.
Typically these are used by the target's header files.
@@ -561,6 +570,9 @@
Transitive Link Properties
^^^^^^^^^^^^^^^^^^^^^^^^^^
+These represent `usage requirements <Target Usage Requirements_>`_ for
+linking consumers.
+
:prop_tgt:`INTERFACE_LINK_LIBRARIES`
List of link libraries for linking the target's consumers, for
those that are executables, shared libraries, or module libraries.
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index 1db237c..f8c722b 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -1777,26 +1777,32 @@
:ref:`semicolon-separated list <CMake Language Lists>` representing the union
of the value on the target itself with the values of the corresponding
:ref:`Target Usage Requirements` on targets named by the target's
- :prop_tgt:`LINK_LIBRARIES`. Evaluation of the usage requirements is
- transitive over the closure of the linked targets'
- :prop_tgt:`INTERFACE_LINK_LIBRARIES`.
+ :prop_tgt:`LINK_LIBRARIES`:
+
+ * For :ref:`Target Compile Properties`, evaluation of corresponding usage
+ requirements is transitive over the closure of the linked targets'
+ :prop_tgt:`INTERFACE_LINK_LIBRARIES` *excluding* entries guarded by the
+ :genex:`LINK_ONLY` generator expression.
+
+ * For :ref:`Target Link Properties`, evaluation of corresponding usage
+ requirements is transitive over the closure of the linked targets'
+ :prop_tgt:`INTERFACE_LINK_LIBRARIES` *including* entries guarded by the
+ :genex:`LINK_ONLY` generator expression. See policy :policy:`CMP0166`.
Evaluation of :prop_tgt:`LINK_LIBRARIES` itself is not transitive.
* :ref:`Target Usage Requirements` evaluate as a
:ref:`semicolon-separated list <CMake Language Lists>` representing the union
of the value on the target itself with the values of the same properties on
- targets named by the target's :prop_tgt:`INTERFACE_LINK_LIBRARIES`.
- Evaluation is transitive over the closure of the target's
- :prop_tgt:`INTERFACE_LINK_LIBRARIES`:
+ targets named by the target's :prop_tgt:`INTERFACE_LINK_LIBRARIES`:
- * For :ref:`Transitive Compile Properties`, the transitive closure
- *excludes* entries of :prop_tgt:`INTERFACE_LINK_LIBRARIES` guarded
- by the :genex:`LINK_ONLY` generator expression.
+ * For :ref:`Transitive Compile Properties`, evaluation is transitive over
+ the closure of the target's :prop_tgt:`INTERFACE_LINK_LIBRARIES`
+ *excluding* entries guarded by the :genex:`LINK_ONLY` generator expression.
- * For :ref:`Transitive Link Properties`, the transitive closure is
- *includes* entries of :prop_tgt:`INTERFACE_LINK_LIBRARIES` guarded
- by the :genex:`LINK_ONLY` generator expression.
+ * For :ref:`Transitive Link Properties`, evaluation is transitive over
+ the closure of the target's :prop_tgt:`INTERFACE_LINK_LIBRARIES`
+ *including* entries guarded by the :genex:`LINK_ONLY` generator expression.
See policy :policy:`CMP0166`.
Evaluation of :prop_tgt:`INTERFACE_LINK_LIBRARIES` itself is not transitive.