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 原始碼檔案。

注意

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