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
属性作为 传递链接属性,以降序处理静态库的私有依赖项(这些依赖项会出现在它们的被 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 中移除。