MSVC_RUNTIME_CHECKS¶
4.0 版本新增。
在针对 MSVC ABI 时选择已启用的运行时检查列表。
允许的值为
PossibleDataLoss使用
-RTCc或等效标志来编译,以启用潜在数据丢失检查。StackFrameErrorCheck使用
-RTCs或等效标志来编译,以启用堆栈帧错误检查。UninitializedVariable使用
-RTCu或等效标志来编译,以启用未初始化变量检查。
对于不以 MSVC ABI 为目标编译器的编译器,此值将被忽略,但当使用以 MSVC ABI 为目标编译器的编译器时,不受支持的值将被视为错误。
该值也可以是空字符串(""),在这种情况下,CMake 不会显式添加任何运行时错误检查标志。
使用 生成器 表达式 来支持每个配置的规范。例如,以下代码
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 设置为 NEW 并且在第一个 project() 或 enable_language() 命令(使用针对 MSVC ABI 的编译器启用语言)之前生效。