CMP0022¶
INTERFACE_LINK_LIBRARIES
定义链接界面。
CMake 2.8.11 从与 (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?
匹配的属性构建目标的“链接界面”。指定受配置影响的内容的现代方式是使用生成器表达式,IMPORTED_
前缀导致使用生成器表达式不可能对链接界面进行统一处理。在 CMake 2.8.12 中,INTERFACE_LINK_LIBRARIES
目标属性被引入作为替代。此新属性的命名与 INTERFACE_COMPILE_DEFINITIONS
、INTERFACE_INCLUDE_DIRECTORIES
和 INTERFACE_COMPILE_OPTIONS
属性一致。对于内置目标,仅当策略 CMP0022
为 NEW
时,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_PRIVATE
和 LINK_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 版本中移除。