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 及更高版本預設選擇將 /GR
從 CMAKE_CXX_FLAGS
的值中省略。
此政策提供與尚未更新以預期缺少 /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 中移除。