CMP0166¶
3.30 版本新增。
TARGET_PROPERTY 在静态库的私有依赖项上以传递方式评估链接属性。
在 CMake 3.29 及更低版本中,TARGET_PROPERTY 生成器表达式评估属性 INTERFACE_LINK_OPTIONS、INTERFACE_LINK_DIRECTORIES 和 INTERFACE_LINK_DEPENDS 时,即使策略 CMP0099 设置为 NEW,它们也会被视为传递编译属性而非传递链接属性。静态库的私有依赖项(出现在其由 LINK_ONLY 生成器表达式保护的 INTERFACE_LINK_LIBRARIES 中)不会被追踪。这与构建系统生成期间对相同目标属性的评估不一致。
CMake 3.30 及更高版本倾向于让 TARGET_PROPERTY 将属性 INTERFACE_LINK_OPTIONS、INTERFACE_LINK_DIRECTORIES 和 INTERFACE_LINK_DEPENDS 评估为传递链接属性,从而追踪静态库的私有依赖项(出现在其由 LINK_ONLY 生成器表达式保护的 INTERFACE_LINK_LIBRARIES 中)。此策略为尚未更新以适应新行为的项目提供兼容性。
此策略的 OLD 行为是让 TARGET_PROPERTY 将属性 INTERFACE_LINK_OPTIONS、INTERFACE_LINK_DIRECTORIES 和 INTERFACE_LINK_DEPENDS 视为传递编译属性,即不追踪静态库的私有依赖项。此策略的 NEW 行为是通过追踪静态库的私有依赖项,将其评估为传递链接属性。
此策略引入于 CMake 版本 3.30。它可以通过 cmake_policy() 或 cmake_minimum_required() 设置。如果未设置,CMake *不会* 警告,并使用 OLD 行为。
注意
策略的 OLD 行为根据定义已被弃用,并可能在未来版本的 CMake 中被移除。