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