CMAKE_MSVC_RUNTIME_LIBRARY

在 3.15 版本加入.

选择供以 MSVC ABI 为目标的编译器使用的 MSVC 运行时库。此变量用于在创建所有目标时初始化所有目标的 MSVC_RUNTIME_LIBRARY 属性。它还通过调用 try_compile() 命令传播到测试项目中。

允许的值为:

多线程

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

多线程DLL

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

多线程调试

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

MultiThreadedDebugDLL

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

在不以 MSVC ABI 为目标的编译器上会忽略该值,但在使用以 MSVC ABI 为目标的编译器时,不受支持的值将作为错误被拒绝。

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

使用 generator expressions 来支持每个配置规范。例如,代码:

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

根据配置,为所有以下目标选择一个多线程静态链接运行时库,有或没有调试信息。

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

备注

只有在第一个使用针对 MSVC ABI 的编译器启用语言的 project 或 enable_language 命令之前将策略 CMP0091 设置为 NEW 时,此变量才有效.