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