CMP0157

在版本 3.29 中新增。

Swift 編譯模式由抽象化概念選取。

Swift 編譯器可以使用不同的模式編譯模組。 想要的建置模式取決於開發者是否正在迭代並希望逐步進行變更,或者他們是否正在建置用於發布的版本,並希望將更多最佳化應用於最終的二進制檔案。

CMake 3.26 至 3.28 版本在非偵錯建置類型配置中建置 Swift 二進制檔案時,會啟用全模組最佳化。 對於早於 3.26 的 CMake 版本,開發者需要為 Ninja Generators 手動指定必要的旗標,並且無法為 Xcode 產生器指定全模組最佳化。

CMake 3.29 及更高版本更傾向於使用 Swift_COMPILATION_MODE 目標屬性來設定編譯模式,該屬性可以由 CMAKE_Swift_COMPILATION_MODE 變數初始化。

此政策為尚未更新的專案提供相容性。 政策設定從第一個啟用 Swift 語言的 project()enable_language() 命令開始生效。

注意

一旦政策在專案頂層生效,該選擇必須在整個樹狀結構中使用。 在子目錄中具有巢狀專案的專案中,請務必將所有內容一起轉換。

此政策的 OLD 行為會在非偵錯配置中以 wholemodule 模式建置所有 Swift 目標。 Ninja Generators-wmo 旗標添加到預設的 Swift 旗標集中。Xcode 產生器在產生的 Xcode 專案檔中將 SWIFT_COMPILATION_MODE 屬性設定為 wholemodule

此政策的 NEW 行為是應用 Swift_COMPILATION_MODE 目標屬性中指定的編譯模式,該模式在建立每個目標時由 CMAKE_Swift_COMPILATION_MODE 變數初始化。

此政策在 CMake 3.29 版本中引入。 它可以由 cmake_policy()cmake_minimum_required() 設定。 如果未設定,CMake *不會* 發出警告,並使用 OLD 行為。

注意

政策的 OLD 行為依定義為 deprecated by definition,並可能在未來的 CMake 版本中移除。