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 版本中移除。