可以根據自己Mac
的性能,更改線程數設置5
:defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 5
另外也有一個設置可以開啟:defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
XCode默認使用與CPU核數相同的線程來進行編譯,但由於編譯過程中的IO操作往往比CPU運算要多,因此適當的提升線程數可以在一定程度上加快編譯速度。
在工程對應Target
的Build Settings
中,找到Debug Information Format
這一項,將Debug時的DWARF with dSYM file
改為DWARF
。
如圖:
這一項設置的是是否將調試信息加入到可執行文件中,改為DWARF後,如果程序崩潰,將無法輸出崩潰位置對應的函數堆棧,但由於Debug模式下可以在XCode中查看調試信息,所以改為DWARF影響並不大。這一項更改完之後,可以大幅提升編譯速度。
比如在目前本人負責的項目中,由於依賴了多個Target
,所以需要在每個Target
的Debug Information Format
設置為DWARF
。順便提一下,如果通過Cocoapod
引入第三方則Debug Information Format
默認就是設置為DWARF
的。
SDWebImage
通過Cocoapod``Debug Information Format
的默認設置
注意:將
Debug Information Format
改為DWARF
之後,會導致在Debug
窗口無法查看相關類類型的成員變量的值。當需要查看這些值時,可以將Debug Information Format
改回DWARF with dSYM file
,clean(必須)
之後重新編譯即可。
在工程對應Target
的Build Settings
中,找到Build Active Architecture Only
這一項,將Debug
時的NO
改為Yes
。
這一項設置的是是否僅編譯當前架構的版本,如果為NO
,會編譯所有架構的版本。需要注意的是,此選項在Release
模式下必須為NO`,否則發布的ipa在部分設備上將不能運行。這一項更改完之後,可以顯著提高編譯速度。
不要再項目中或者靜態庫中使用-O4
,因為這會讓Clang
鏈接Link Time Optimizations (LTO)
使得編譯更慢,通常使用-O3
。
注意:在設置編譯優化之後,XCode斷點和調試信息會不正常,所以一般靜態庫或者其他Target
這樣設置。
@class
就用@class
To speed up the XCode compile and link speed (200%+)