| 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. It takes effect during buildsystem generation. |
| Generator expressions are evaluated in each directory using the policy setting |
| as of the end of its ``CMakeLists.txt``. As an exception, generator |
| expressions evaluated by the :command:`file(GENERATE)` command use the |
| policy setting as of its call site. |
| |
| 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:: include/STANDARD_ADVICE.rst |
| |
| .. include:: include/DEPRECATED.rst |