CMP0141¶
在版本 3.25 中新增。
MSVC 偵錯資訊格式旗標由抽象化機制選取。
以 MSVC ABI 為目標的編譯器具有選擇偵錯資訊格式的旗標。偵錯資訊格式的選擇通常隨建置組態而異。
在 CMake 3.24 及更早版本中,偵錯資訊格式旗標會由 CMake 自動新增至預設的 CMAKE_<LANG>_FLAGS_<CONFIG>
快取條目中。這允許使用者編輯其快取條目以調整旗標。然而,對於想要以程式化方式選擇不同偵錯資訊格式的專案來說,這些預設旗標的存在是有問題的。特別是,它需要字串編輯 CMAKE_<LANG>_FLAGS_<CONFIG>
變數,並具備 CMake 內建預設值的知識,以便它們可以被替換。
CMake 3.25 及以上版本傾向於將偵錯資訊格式旗標從預設的 CMAKE_<LANG>_FLAGS_<CONFIG>
值中移除,並改為提供一流的抽象化機制。CMAKE_MSVC_DEBUG_INFORMATION_FORMAT
變數和 MSVC_DEBUG_INFORMATION_FORMAT
目標屬性可以設定來選擇 MSVC 偵錯資訊格式。如果它們未設定,CMake 會在使用預設值 $<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>
的偵錯組態中啟用偵錯資訊(如果編譯器支援),否則使用 $<$<CONFIG:Debug,RelWithDebInfo>:Embedded>
。
此政策為尚未更新以了解抽象化機制的專案提供相容性。政策設定在第一個啟用編譯器以 MSVC ABI 為目標的語言的 project()
或 enable_language()
命令生效後開始生效。
注意
一旦政策在專案頂層生效,該選擇將在整個樹狀結構中使用。在子目錄中具有巢狀專案的專案中,請務必確認一切都以選定的政策行為運作。
此政策的 OLD
行為是將 MSVC 偵錯資訊格式旗標放置在預設的 CMAKE_<LANG>_FLAGS_<CONFIG>
快取條目中,並忽略 CMAKE_MSVC_DEBUG_INFORMATION_FORMAT
抽象化機制。此政策的 NEW
行為是不將 MSVC 偵錯資訊格式旗標放置在預設快取條目中,而是改用抽象化機制。
此政策在 CMake 版本 3.25 中引入。它可以使用 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 不會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為依定義已棄用
,並可能在未來版本的 CMake 中移除。