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 指定的),那么对于编译“调试”运行时库的配置,UseDebugLibrariestrue,对于其他配置为 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 版本中被移除。