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