CMP0022¶
警告
此策略的 OLD
行为在 CMake 4.0 版本中已被移除。此策略必须通过调用 cmake_minimum_required()
或 cmake_policy()
设置为 NEW
。
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
的目标时,默认情况下只会处理 INTERFACE_LINK_LIBRARIES
属性并为 IMPORTED
目标生成。 install(EXPORT)
和 export 命令的新选项允许导出旧式属性,以便与 CMake 2.8.12 之前版本的下游用户兼容。如果此策略为 NEW
,则 target_link_libraries()
命令将不再填充匹配 LINK_INTERFACE_LIBRARIES(_<CONFIG>)?
的属性。
通过使用 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 4.0 版本中移除之前,可以通过 cmake_policy()
或 cmake_minimum_required()
进行设置。如果未设置,CMake 会发出警告,并使用 OLD
行为。