CMP0166¶
3.30 版本新增。
TARGET_PROPERTY
在静态库的私有依赖项上递归评估链接属性。
在 CMake 3.29 及更早版本中,TARGET_PROPERTY
生成器表达式评估属性 INTERFACE_LINK_OPTIONS
、INTERFACE_LINK_DIRECTORIES
和 INTERFACE_LINK_DEPENDS
,如同它们是 传递编译属性 而非 传递链接属性,即使策略 CMP0099
设置为 NEW
。静态库的私有依赖项,它们出现在其 INTERFACE_LINK_LIBRARIES
中,并由 LINK_ONLY
生成器表达式保护,不会被跟踪。这与构建系统生成过程中相同目标属性的评估不一致。
CMake 3.30 及更高版本倾向于让 TARGET_PROPERTY
将属性 INTERFACE_LINK_OPTIONS
、INTERFACE_LINK_DIRECTORIES
和 INTERFACE_LINK_DEPENDS
评估为 传递链接属性,以便跟踪静态库的私有依赖项,这些依赖项出现在其 INTERFACE_LINK_LIBRARIES
中并由 LINK_ONLY
生成器表达式保护。此策略为尚未更新以适应新行为的项目提供了兼容性。
此策略的 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 的未来版本中移除。