CMAKE_MSVC_RUNTIME_CHECKS¶
4.0 版本新增。
选择针对 MSVC ABI 进行编译时启用的运行时检查列表。该变量用于在所有目标创建时初始化其 MSVC_RUNTIME_CHECKS 属性。它还会通过调用 try_compile() 命令传播到测试项目中。
允许的值为
PossibleDataLoss使用
-RTCc或等效标志编译,以启用可能的数据丢失检查。StackFrameErrorCheck使用
-RTCs或等效标志编译,以启用栈帧错误检查。UninitializedVariable使用
-RTCu或等效标志编译,以启用未初始化变量检查。
对于不以 MSVC ABI 为目标编译器的编译器,此值将被忽略,但当使用以 MSVC ABI 为目标编译器的编译器时,不受支持的值将被视为错误。
该值也可以是空字符串 (""),在这种情况下,CMake 不会显式添加任何运行时错误检查标志。
使用 生成器表达式 来支持按配置指定。例如,以下代码
set(CMAKE_MSVC_RUNTIME_CHECKS "$<$<CONFIG:Debug,RelWithDebInfo>:PossibleDataLoss;UninitializedVariable>")
为目标 foo 在 Debug 和 RelWithDebInfo 配置下启用可能的数据丢失和未初始化变量检查。
如果未设置此变量,则不会自动设置 MSVC_RUNTIME_CHECKS 目标属性。如果未设置该属性,CMake 将使用默认值 $<$<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable> 选择运行时检查(如果编译器支持),否则将使用空值。
注意
仅当在调用第一个启用使用 MSVC ABI 编译器的语言的 project() 或 enable_language() 命令之前,将策略 CMP0184 设置为 NEW 时,此变量才有效。