CMAKE_MSVC_RUNTIME_LIBRARY

在版本 3.15 中添加。

为面向 MSVC ABI 的编译器选择 MSVC 运行时库。在创建所有目标时,此变量用于初始化 MSVC_RUNTIME_LIBRARY 属性。它也会由对 try_compile() 命令的调用传播到测试项目中。

允许的值是

MultiThreaded

使用 -MT 或等效标志编译以使用多线程静态链接运行时库。

MultiThreadedDLL

使用 -MD 或等效标志编译以使用多线程动态链接运行时库。

MultiThreadedDebug

使用 -MTd 或等效标志编译以使用多线程静态链接运行时库。

MultiThreadedDebugDLL

使用 -MDd 或等效标志编译以使用多线程动态链接运行时库。

对于不针对 MSVC ABI 的编译器,此值将被忽略,但当使用针对 MSVC ABI 的编译器时,不受支持的值将作为错误被拒绝。

此值也可以是空字符串 (""),在这种情况下,CMake 不会显式添加运行时库选择标志。请注意,使用 Visual Studio 生成器 时,本机构建系统可能会选择添加其自己的默认运行时库选择标志。

使用 生成器 表达式 来支持按配置规范。例如,以下代码

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

将为所有后续目标选择一个带或不带调试信息的多线程静态链接运行时库(取决于配置)。

如果未设置此变量,则 MSVC_RUNTIME_LIBRARY 目标属性不会自动设置。如果未设置该属性,则 CMake 将使用默认值 MultiThreaded$<$<CONFIG:Debug>:Debug>DLL 来选择 MSVC 运行时库。

注意

此变量仅在将策略 CMP0091 设置为 NEW(在第一个 project()enable_language() 命令使用面向 MSVC ABI 的编译器启用语言之前)时才有效。