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>
(如果编译器支持)或空值来选择运行时检查。
注意
此变量仅在策略 CMP0184
设置为 NEW
且早于第一个启用使用针对 MSVC ABI 的编译器的语言的 project()
或 enable_language()
命令时才生效。