Swift_COMPILATION_MODE

新增於版本 3.29。

指定 Swift 編譯目標的方式。

允許的值為

incremental

分別編譯模組中的每個 Swift 原始碼,從而在建置中實現更好的平行處理。編譯器會將額外資訊發送到建置目錄中,在重建時,若對原始碼進行小修改,則可提升效能。在專案中反覆修改時,這是最佳選項。

wholemodule

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

singlefile

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

使用 產生器 運算式 來支援每個組態的規格。例如,以下程式碼

add_library(foo foo.swift)
set_property(TARGET foo PROPERTY
  Swift_COMPILATION_MODE "$<IF:$<CONFIG:Release>,wholemodule,incremental>")

在發佈組態中將 Swift 編譯模式設定為 wholemodule 模式,並在其他組態中將屬性設定為 incremental 模式。

該屬性會從 CMAKE_Swift_COMPILATION_MODE 變數的值初始化(如果已設定)。如果未設定屬性或屬性為空,則 CMake 會使用預設值 incremental 來指定 swift 編譯模式。

注意

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