CMP0189¶
在 4.1 版本中新增。
TARGET_PROPERTY 会传递性地评估 LINK_LIBRARIES 属性。
和 LINK_LIBRARIESINTERFACE_LINK_LIBRARIES 目标属性会记录链接依赖关系,通过这些依赖关系,TARGET_PROPERTY 生成器表达式会评估传递性属性。然而,在 CMake 4.0 及更早版本中,这些属性本身并没有被传递性地评估。CMake 4.1 及更高版本倾向于传递性地评估 LINK_LIBRARIES 和 INTERFACE_LINK_LIBRARIES 目标属性,因为它们分别是 构建规范 和 使用要求 属性。
此策略为未更新以期望新行为的项目提供兼容性。它在构建系统生成期间生效。生成器表达式在每个目录中使用其 CMakeLists.txt 结束时的策略设置进行评估。例外情况是,由 file(GENERATE) 命令评估的生成器表达式使用其调用点处的策略设置。
此策略的 OLD 行为是 TARGET_PROPERTY 不传递性地评估 LINK_LIBRARIES 和 INTERFACE_LINK_LIBRARIES。 NEW 行为是 TARGET_PROPERTY 传递性地评估 LINK_LIBRARIES 和 INTERFACE_LINK_LIBRARIES。
此策略是在 CMake 版本 4.1 中引入的。它可以由 cmake_policy() 或 cmake_minimum_required() 命令设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。