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”运行时库的配置,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 版本中被移除。