CMP0131

在 3.24 版本中添加。

LINK_LIBRARIES 支持 $<LINK_ONLY:...> 生成器表达式。

CMake 3.23 及更早版本仅为 INTERFACE_LINK_LIBRARIES 记录了 $<LINK_ONLY:...> 生成器表达式。当在 LINK_LIBRARIES 中使用时,即使在收集非链接使用要求(例如 INTERFACE_COMPILE_DEFINITIONS)时,$<LINK_ONLY:...> 内部受保护的内容也始终被使用。

CMake 3.24 及更高版本倾向于支持 $<LINK_ONLY:...>,当在 LINK_LIBRARIES 中使用时,仅将受保护的内容用于链接依赖项,而不是其他使用要求。此策略为未更新以适应此更改的项目提供了兼容性。

此策略的 OLD 行为是即使对于非链接使用要求,也使用 LINK_LIBRARIES 中受 $<LINK_ONLY:...> 保护的内容。此策略的 NEW 行为是仅将受保护的内容用于链接依赖项。

此策略已在 CMake 版本 3.24 中引入。它可以由 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。

注意

策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。