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_DEFINITIONSINTERFACE_INCLUDE_DIRECTORIESINTERFACE_COMPILE_OPTIONS 属性保持一致。对于内部构建目标,只有当策略 CMP0022NEW 时,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_PRIVATELINK_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 行为。