MSVC_RUNTIME_LIBRARY

版本 3.15 新增。

为使用 MSVC ABI 的编译器选择 MSVC 运行时库。

允许的值为

MultiThreaded

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

MultiThreadedDLL

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

MultiThreadedDebug

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

MultiThreadedDebugDLL

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

对于不以 MSVC ABI 为目标编译器的编译器,此值将被忽略,但当使用以 MSVC ABI 为目标编译器的编译器时,不受支持的值将被视为错误。

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

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

add_executable(foo foo.c)
set_property(TARGET foo PROPERTY
  MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

为目标 foo 选择多线程静态链接的运行时库,根据配置是否包含调试信息。

如果变量 CMAKE_MSVC_RUNTIME_LIBRARY 已设置,则该属性将从其值初始化。如果未设置该属性,则 CMake 使用默认值 MultiThreaded$<$<CONFIG:Debug>:Debug>DLL 来选择 MSVC 运行时库。

注意

此属性仅在策略 CMP0091 在启用使用 MSVC ABI 的编译器所使用的语言的第一个 project()enable_language() 命令之前设置为 NEW 时才生效。