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 將不會明確地加入任何除錯資訊格式旗標。

使用 generator expressions 以支援每個組態的規格。例如,以下程式碼

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

為所有後續目標選擇 DebugRelWithDebInfo 組態的程式資料庫除錯資訊格式。

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

注意

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