
The `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` target properties establish the graph of link dependencies used to propagate usage requirements transitively. Therefore the `$<TARGET_PROPERTY:...>` generator expression should evaluate them transitively as it does for other transitive properties. Add policy CMP0189 for compatibility. Fixes: #26709 Issue: #12435
31 lines
1.3 KiB
ReStructuredText
31 lines
1.3 KiB
ReStructuredText
CMP0189
|
|
-------
|
|
|
|
.. versionadded:: 4.1
|
|
|
|
:genex:`TARGET_PROPERTY` evaluates ``LINK_LIBRARIES`` properties transitively.
|
|
|
|
The :prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
|
|
target properties record link dependencies through which the
|
|
:genex:`TARGET_PROPERTY` generator expression evaluates transitive properties.
|
|
However, in CMake 4.0 and below, the properties themselves were not evaluated
|
|
transitively. CMake 4.1 and above prefer to evaluate the
|
|
:prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
|
|
target properties transitively because they are among the
|
|
:ref:`build specification <Target Build Specification>` and
|
|
:ref:`usage requirement <Target Usage Requirements>` properties, respectively.
|
|
This policy provides compatibility for projects that have not been updated to
|
|
expect the new behavior.
|
|
|
|
The ``OLD`` behavior of this policy is for :genex:`TARGET_PROPERTY` to not
|
|
evaluate :prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
|
|
transitively. The ``NEW`` behavior is for :genex:`TARGET_PROPERTY` to
|
|
evaluate :prop_tgt:`LINK_LIBRARIES` and :prop_tgt:`INTERFACE_LINK_LIBRARIES`
|
|
transitively.
|
|
|
|
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.1
|
|
.. |WARNS_OR_DOES_NOT_WARN| replace:: does *not* warn
|
|
.. include:: STANDARD_ADVICE.txt
|
|
|
|
.. include:: DEPRECATED.txt
|