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