CMP0166

在版本 3.30 中添加。

TARGET_PROPERTY 计算静态库私有依赖项的传递链接属性。

在 CMake 3.29 及更低版本中,TARGET_PROPERTY 生成器表达式将属性 INTERFACE_LINK_OPTIONSINTERFACE_LINK_DIRECTORIESINTERFACE_LINK_DEPENDS 视为 传递编译属性,而不是 传递链接属性,即使策略 CMP0099 设置为 NEW。静态库的私有依赖项(出现在其 INTERFACE_LINK_LIBRARIES 中,并由 LINK_ONLY 生成器表达式保护)不会被跟踪。这与构建系统生成期间对相同目标属性的评估不一致。

CMake 3.30 及更高版本倾向于将 TARGET_PROPERTY 评估属性 INTERFACE_LINK_OPTIONSINTERFACE_LINK_DIRECTORIESINTERFACE_LINK_DEPENDS 作为 传递链接属性,以便跟踪静态库的私有依赖项(出现在其 INTERFACE_LINK_LIBRARIES 中,并由 LINK_ONLY 生成器表达式保护)。此策略为尚未更新以期望新行为的项目提供兼容性。

此策略的 OLD 行为是将 TARGET_PROPERTY 评估属性 INTERFACE_LINK_OPTIONSINTERFACE_LINK_DIRECTORIESINTERFACE_LINK_DEPENDS 视为 传递编译属性,而不跟踪静态库的私有依赖项。此策略的 NEW 行为是将它们评估为 传递链接属性,并跟踪静态库的私有依赖项。

此策略在 CMake 版本 3.30 中引入。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 不会发出警告,并使用 OLD 行为。

注意

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