Back to Cmake

CMP0189

Help/policy/CMP0189.rst

4.3.21.6 KB
Original Source

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