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
在第一個 project()
或 enable_language()
命令 (該命令啟用使用以 MSVC ABI 為目標的編譯器的語言) 之前設定為 NEW
時,此屬性才有效。