CMAKE_MSVC_RUNTIME_CHECKS

在 4.0 版本中添加。

选择以 MSVC ABI 为目标时启用的运行时检查列表。此变量用于初始化所有目标创建时的 MSVC_RUNTIME_CHECKS 属性。它也通过调用 try_compile() 命令传播到测试项目。

允许的值为

PossibleDataLoss

使用 -RTCc 或等效标志编译以启用可能的数据丢失检查。

StackFrameErrorCheck

使用 -RTCs 或等效标志编译以启用堆栈帧错误检查。

UninitializedVariable

使用 -RTCu 或等效标志编译以启用未初始化变量检查。

该值在不以 MSVC ABI 为目标的编译器上将被忽略,但是当使用以 MSVC ABI 为目标的编译器时,不支持的值将被拒绝并报错。

该值也可以是空字符串 (""),在这种情况下,CMake 不会显式添加任何运行时错误检查标志。

使用 generator expressions 以支持每个配置的规范。例如,以下代码

set(CMAKE_MSVC_RUNTIME_CHECKS "$<$<CONFIG:Debug,RelWithDebInfo>:PossibleDataLoss;UninitializedVariable>")

为目标 fooDebugRelWithDebInfo 配置中启用可能的数据丢失和未初始化变量检查。

如果未设置此变量,则不会自动设置 MSVC_RUNTIME_CHECKS 目标属性。如果未设置该属性,CMake 将使用默认值 $<$<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable> (如果编译器支持)或空值(否则)来选择运行时检查。

注意

此变量仅在策略 CMP0184 在第一个 project()enable_language() 命令之前设置为 NEW 时生效,该命令启用使用以 MSVC ABI 为目标的编译器的语言。