CMP0022¶
警告
此策略的 OLD 行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required() 或 cmake_policy() 来设置为 NEW。
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 的目标时,默认情况下,只会为 IMPORTED 目标处理并生成 INTERFACE_LINK_LIBRARIES 属性。 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 行为。