CMP0117¶
在版本 3.20 中新增。
MSVC RTTI 旗標 /GR
預設不會新增至 CMAKE_CXX_FLAGS
。
當在 CMake 3.19 及更早版本中使用類似 MSVC 的編譯器時,RTTI 旗標 /GR
預設會新增至 CMAKE_CXX_FLAGS
。此行為是從支援 Visual Studio 2003 及更早版本 MSVC 版本遺留下來的,這些版本預設未啟用 RTTI。這已不再必要。此外,對於想要以程式方式變更為 /GR-
的專案來說,這是有問題的。特別是,它需要編輯 CMAKE_CXX_FLAGS
變數的字串,並了解 CMake 內建預設值,以便可以替換它。
CMake 3.20 及更高版本預設傾向於從 CMAKE_CXX_FLAGS
的值中省略 /GR
。
此政策提供了與尚未更新以預期缺少 /GR
旗標的專案的相容性。政策設定在初始化 CMAKE_CXX_FLAGS
的第一個 project()
或 enable_language()
命令生效。
注意
一旦政策在專案頂層針對給定語言生效,則該選擇必須在整個樹狀結構中用於該語言。在子目錄中具有巢狀專案的專案中,請務必將所有內容一起轉換。
此政策的 OLD
行為是將 MSVC /GR
旗標放置在預設 CMAKE_CXX_FLAGS
快取條目中。此政策的 NEW
行為是不將 MSVC /GR
旗標放置在預設快取條目中。
此政策在 CMake 版本 3.20 中引入。它可以使用 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 不會警告,並使用 OLD
行為。
注意
政策的 OLD
行為 依定義已棄用
,並可能在未來版本的 CMake 中移除。