diff --git a/Help/manual/cmake-buildsystem.7.rst b/Help/manual/cmake-buildsystem.7.rst index acb1ed7ed8..93d55c7dd7 100644 --- a/Help/manual/cmake-buildsystem.7.rst +++ b/Help/manual/cmake-buildsystem.7.rst @@ -314,6 +314,9 @@ dependencies. Target Compile Properties ^^^^^^^^^^^^^^^^^^^^^^^^^ +These represent the `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 Compile Properties Target Link Properties ^^^^^^^^^^^^^^^^^^^^^^ +These represent the `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 @@ command. See :ref:`Creating Packages` for more. Transitive Compile Properties ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +These represent `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 Compile Properties Transitive Link Properties ^^^^^^^^^^^^^^^^^^^^^^^^^^ +These represent `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 1db237cfbf..f8c722b8af 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -1777,26 +1777,32 @@ The expressions have special evaluation rules for some properties: :ref:`semicolon-separated list ` 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 ` 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.