CMP0189 — CMake 4.1.4 Documentation

# CMP0189

Added in version 4.1.

`TARGET_PROPERTY` evaluates `LINK_LIBRARIES` properties transitively.

The `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` target properties record link dependencies through which the `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 `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` target properties transitively because they are among the build specification and usage requirement 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 `file(GENERATE)` command use the policy setting as of its call site.

The `OLD` behavior of this policy is for `TARGET_PROPERTY` to not evaluate `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` transitively. The `NEW` behavior is for `TARGET_PROPERTY` to evaluate `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` transitively.

This policy was introduced in CMake version 4.1. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake does not warn, and uses `OLD` behavior.

Note

The `OLD` behavior of a policy is `deprecated by definition` and may be removed in a future version of CMake.