CMP0162

添加于版本 3.30 中。

Visual Studio 生成器 默认添加 UseDebugLibraries 指示符。

Visual Studio 项目中的“使用调试库”设置指示哪些配置被认为是调试配置。在独立项目中,这可能会影响 MSBuild 默认选择的 MSVC 运行时库、优化标志、运行时检查以及类似设置。CMake 通常会根据项目的规范显式生成所有这些设置,因此 CMake 3.29 及更低版本不会将任何 UseDebugLibraries 指示符写入 .vcxproj 文件。

CMake 3.30 及更高版本倾向于编写 UseDebugLibraries 指示符,因为它们对于人类和工具的参考都很有用,并且还可能会影响特定于平台的 SDK 的行为。每个目标的配置指示符确定方式如下:

  • 如果目标编译已知 MSVC 运行时库(例如 MSVC_RUNTIME_LIBRARY 指定的运行时库),那么 UseDebugLibraries 对于编译为“调试”运行时库的配置为 true,对于其他配置为 false

  • 否则,例如在 add_custom_target() 创建的目标中,UseDebugLibraries 对于 Debug 配置为 true,对于其他配置为 false

此策略为尚未更新以期望指示符的项目提供兼容性。每个目标在创建时都会记录该策略设置,并用于确定该目标的 .vcxproj 文件的默认行为。

此策略的 OLD 行为是不默认生成 UseDebugLibraries 指示符。此策略的 NEW 行为是默认生成 UseDebugLibraries 指示符。

如果设置了 CMAKE_VS_USE_DEBUG_LIBRARIES 变量和/或 VS_USE_DEBUG_LIBRARIES 目标属性,它会显式控制 UseDebugLibraries 生成,而不管此策略如何。

此策略是在 CMake 版本 3.30 中引入的。可以通过 cmake_policy()cmake_minimum_required() 进行设置。如果不进行设置,CMake 不会 发出警告,并使用 OLD 行为。

注意

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