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 及更高版本預設選擇將 /GRCMAKE_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 中移除。