CMAKE_MSVC_DEBUG_INFORMATION_FORMAT

於 3.25 版本新增。

選擇以 MSVC ABI 為目標的 MSVC 偵錯資訊格式。此變數用於初始化所有目標在建立時的 MSVC_DEBUG_INFORMATION_FORMAT 屬性。它也會透過呼叫 try_compile() 命令傳播到測試專案中。

允許的值為

Embedded

使用 -Z7 或等效的旗標編譯,以產生包含完整符號偵錯資訊的物件檔。

ProgramDatabase

使用 -Zi 或等效的旗標編譯,以產生包含所有符號偵錯資訊的程式資料庫。

EditAndContinue

使用 -ZI 或等效的旗標編譯,以產生支援「編輯並繼續」功能的程式資料庫。

此值在非以 MSVC ABI 為目標的編譯器上會被忽略,但當使用以 MSVC ABI 為目標的編譯器時,不支援的值會被拒絕,並產生錯誤。

此值也可能是空字串(""),在這種情況下,CMake 不會明確地加入任何偵錯資訊格式旗標。

使用 產生器 表達式 來支援每個組態的規格。例如,以下程式碼

set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>")

為所有後續目標選取 Debug 組態的程式資料庫偵錯資訊格式。

如果未設定此變數,則不會自動設定 MSVC_DEBUG_INFORMATION_FORMAT 目標屬性。如果未設定該屬性,CMake 會使用預設值 $<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase> 選擇偵錯資訊格式(如果編譯器支援),否則使用 $<$<CONFIG:Debug,RelWithDebInfo>:Embedded>

注意

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