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 啟用 DebugRelWithDebInfo 組態的可能的資料遺失和未初始化變數檢查。

此屬性會從 CMAKE_MSVC_RUNTIME_CHECKS 變數的值初始化 (如果已設定)。如果未設定此屬性,CMake 會使用預設值 $<$<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable> (如果編譯器支援) 或空值來選擇執行階段檢查。

注意

僅當原則 CMP0184 在第一個 project()enable_language() 命令 (該命令啟用使用以 MSVC ABI 為目標的編譯器的語言) 之前設定為 NEW 時,此屬性才有效。