CMP0022

INTERFACE_LINK_LIBRARIES 定义链接界面。

CMake 2.8.11 从与 (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? 匹配的属性构建目标的“链接界面”。指定受配置影响的内容的现代方式是使用生成器表达式,IMPORTED_ 前缀导致使用生成器表达式不可能对链接界面进行统一处理。在 CMake 2.8.12 中,INTERFACE_LINK_LIBRARIES 目标属性被引入作为替代。此新属性的命名与 INTERFACE_COMPILE_DEFINITIONSINTERFACE_INCLUDE_DIRECTORIESINTERFACE_COMPILE_OPTIONS 属性一致。对于内置目标,仅当策略 CMP0022NEW 时,CMake 才会使用 INTERFACE_LINK_LIBRARIES 属性作为链接界面的来源。导出具有将此策略设置为 NEW 的目标时,默认情况下仅 INTERFACE_LINK_LIBRARIES 属性将被处理并为 IMPORTED 目标生成。向 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 及更高版本配合使用。

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

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

注意

策略的 OLD 行为按 定义已弃用 定义,且会在将来的 CMake 版本中移除。