MSVC_DEBUG_INFORMATION_FORMAT

於 3.25 版本新增。

選擇以 MSVC ABI 為目標時的除錯資訊格式。

允許的值為

Embedded

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

ProgramDatabase

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

EditAndContinue

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

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

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

使用 產生器 表達式 來支援依組態設定。例如,以下程式碼

add_executable(foo foo.c)
set_property(TARGET foo PROPERTY
  MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>")

為目標 foo 選擇 Debug 組態的程式資料庫除錯資訊格式。

如果已設定,則此屬性會從 CMAKE_MSVC_DEBUG_INFORMATION_FORMAT 變數的值初始化。如果未設定此屬性,CMake 將使用預設值 $<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase> 選擇除錯資訊格式(如果編譯器支援),否則使用 $<$<CONFIG:Debug,RelWithDebInfo>:Embedded>

注意

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