CMP0189

在 4.1 版本中新增。

TARGET_PROPERTY 会传递性地评估 LINK_LIBRARIES 属性。

目标属性 LINK_LIBRARIESINTERFACE_LINK_LIBRARIES 记录了链接依赖项,通过这些依赖项,生成器表达式 TARGET_PROPERTY 评估传递性属性。 然而,在 CMake 4.0 及更早版本中,这些属性本身并没有被传递性地评估。 CMake 4.1 及更高版本更倾向于传递性地评估 LINK_LIBRARIESINTERFACE_LINK_LIBRARIES 目标属性,因为它们是 构建规范使用要求 属性之一。

此策略为尚未更新以期望新行为的项目提供兼容性。 它在构建系统生成期间生效。 生成器表达式在每个目录中使用策略设置进行评估,直到其 CMakeLists.txt 的结尾。 作为例外,由 file(GENERATE) 命令评估的生成器表达式使用其调用站点处的策略设置。

此策略的 OLD 行为是 TARGET_PROPERTY 不会传递性地评估 LINK_LIBRARIESINTERFACE_LINK_LIBRARIESNEW 行为是 TARGET_PROPERTY 会传递性地评估 LINK_LIBRARIESINTERFACE_LINK_LIBRARIES

此策略是在 CMake 版本 4.1 中引入的。它可以由 cmake_policy()cmake_minimum_required() 命令设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。

注意

策略的 OLD 行为根据定义已被弃用,并可能在未来版本的 CMake 中被移除。