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 原始碼檔案。
注意
此屬性僅在原則 CMP0157
在啟用 Swift 語言的第一個 project()
或 enable_language()
命令之前設定為 NEW
時才有效。