Swift_COMPILATION_MODE

版本 3.29 新增。

指定 Swift 編譯目標的方式。

允許的值為

incremental

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

wholemodule

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

singlefile

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

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

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 時,此屬性才有效。