CMP0022

INTERFACE_LINK_LIBRARIES 定义链接接口。

CMake 2.8.11 从匹配``(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` 的属性构造目标的“链接接口”。指定配置敏感内容的现代方法是使用生成器表达式,而 IMPORTED_ 前缀使得无法使用生成器表达式统一处理链接接口。 INTERFACE_LINK_LIBRARIES 目标属性作为 CMake 2.8.12 中的替代品引入。这个新属性的命名与“INTERFACE_COMPILE_DEFINITIONS”、“INTERFACE_INCLUDE_DIRECTORIES”和“INTERFACE_COMPILE_OPTIONS”属性一致。对于内置目标,仅当策略“CMP0022”为“NEW”时,CMake 才会使用 INTERFACE_LINK_LIBRARIES 属性作为链接接口的源。导出将此策略设置为 NEW 的目标时,默认情况下只会为 IMPORTED 目标处理和生成 INTERFACE_LINK_LIBRARIES 属性。 install(EXPORT) 和 export 命令的新选项允许导出旧式属性,以便与 2.8.12 之前的 CMake 版本的下游用户兼容。 target_link_libraries() 命令将不再填充与``LINK_INTERFACE_LIBRARIES(_<CONFIG>)?`` 匹配的属性,如果此策略是``NEW``。

可以使用 target_link_libraries()LINK_PRIVATELINK_PUBLIC 关键字编写适用于 CMake 2.8.7 以上的无警告未来兼容代码。

此策略的“旧”行为是忽略内置目标的 INTERFACE_LINK_LIBRARIES 属性。此策略的“新”行为是对内置目标使用“INTERFACE_LINK_LIBRARIES”属性,并忽略匹配“(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?”的旧属性。

此策略是在 CMake 版本 2.8.12 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。