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

如果未設定此變數,則 MSVC_RUNTIME_CHECKS 目標屬性將不會自動設定。如果該屬性未設定,CMake 會使用預設值 $<<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable> (如果編譯器支援) 或空值 (否則) 來選擇執行階段檢查。

注意

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