CMP0157

於 3.29 版本加入。

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

Swift 編譯器可以用不同的模式編譯模組。所需的建置模式取決於開發者是否在迭代並想逐步變更,或者他們是否正在建置用於發佈的版本,並希望將更多最佳化應用於產生的二進位檔。

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

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

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

注意

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

此政策的 OLD 行為會以 wholemodule 模式為非偵錯配置建置所有 Swift 目標。Ninja 產生器-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 行為依定義是已棄用,並且可能會在未來的 CMake 版本中移除。