CMAKE_Swift_COMPILATION_MODE

在版本 3.29 中新增。

指定 Swift 如何編譯目標。此變數用於初始化目標的 Swift_COMPILATION_MODE 屬性。

允許的值為

incremental

分別編譯模組中的每個 Swift 原始碼,從而在建置時實現更好的平行處理。編譯器會將額外的資訊輸出到建置目錄中,當在重建之間對原始碼進行小的更改時,可以提高重建效能。這是在專案中迭代變更時的最佳選擇。

wholemodule

整個模組的優化編譯速度最慢,但會產生最佳化的程式庫。整個上下文會載入到編譯器的一個執行個體中,因此模組中各個原始碼檔案之間沒有平行處理。

singlefile

分別編譯 Swift 模組中的每個原始碼,從而實現更好的平行處理。與 incremental 建置模式不同,編譯器在建置期間不會輸出任何額外的資訊,因此在對原始碼檔案進行小修改後重建將不會更快。除非為了繞過編譯器錯誤,否則應謹慎使用此選項,建議使用 incremental 建置。

使用 generator expressions 以支援每個組態的規格。例如,以下程式碼

set(CMAKE_Swift_COMPILATION_MODE
  "$<IF:$<CONFIG:Release>,wholemodule,incremental>")

將預設的 Swift 編譯模式設定為在建置發行組態時使用 wholemodule 模式,而在其他組態中使用 incremental 模式。

如果未設定此變數,則不會自動設定 Swift_COMPILATION_MODE 目標屬性。如果未設定該屬性,則 CMake 會使用預設值 incremental 來建置 Swift 原始碼檔案。

注意

此屬性僅在原則 CMP0157 在啟用 Swift 語言的第一個 project()enable_language() 命令之前設定為 NEW 時才有效。