CMP0131

在 3.24 版本中添加。

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

CMake 3.23 及以下版本文档中说明 $<LINK_ONLY:...> 生成器表达式仅用于 INTERFACE_LINK_LIBRARIES。当用于 LINK_LIBRARIES 时,$<LINK_ONLY:...> 中受保护的内容始终被使用,即使在收集非链接使用要求(如 INTERFACE_COMPILE_DEFINITIONS)时也是如此。

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 中移除。