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 指定的)编译源文件,则对于为“Debug”运行时库编译的配置,UseDebugLibrariestrue,对于其他配置,则为 false

  • 否则,例如在由 add_custom_target() 创建的目标中,对于 Debug 配置,UseDebugLibrariestrue,对于其他配置,则为 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 版本中移除。