MSVC_RUNTIME_CHECKS¶
版本 4.0 新增。
当以 MSVC ABI 为目标时,选择启用的运行时检查列表。
允许的值为
PossibleDataLoss
使用
-RTCc
或等效标志编译以启用可能的数据丢失检查。StackFrameErrorCheck
使用
-RTCs
或等效标志编译以启用堆栈帧错误检查。UninitializedVariable
使用
-RTCu
或等效标志编译以启用未初始化变量检查。
对于不以 MSVC ABI 为目标的编译器,此值将被忽略;但是当使用以 MSVC ABI 为目标的编译器时,不支持的值将被拒绝并报错。
该值也可以是空字符串 (""
),在这种情况下,CMake 不会显式添加任何运行时错误检查标志。
使用 generator expressions
来支持每个配置的规范。例如,以下代码
add_executable(foo foo.c)
set_property(TARGET foo PROPERTY
MSVC_RUNTIME_CHECKS "$<$<CONFIG:Debug,RelWithDebInfo>:PossibleDataLoss;UninitializedVariable>")
为目标 foo
启用 Debug
和 RelWithDebInfo
配置的可能数据丢失和未初始化变量检查。
此属性从 CMAKE_MSVC_RUNTIME_CHECKS
变量的值初始化(如果已设置)。如果未设置此属性,CMake 将使用默认值 $<$<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable>
选择运行时检查(如果编译器支持),否则使用空值。
注意
仅当策略 CMP0184
在第一个启用使用 MSVC ABI 编译器的语言的 project()
或 enable_language()
命令之前设置为 NEW
时,此属性才生效。