CMP0162

3.30 版本新增。

Visual Studio Generators 默认会添加 UseDebugLibraries 指示符。

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

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

  • 如果目标编译了已知 MSVC 运行时库的源文件(例如由 MSVC_RUNTIME_LIBRARY 指定的),那么对于编译“Debug”运行时库的配置,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 版本中被移除。