如何加快Unreal編譯速度?
你可能已經(jīng)在網(wǎng)上看到過一個空格大法了。我個人不信那玩意兒,我覺得那就是純搞笑的。Windows會把文件在內(nèi)存中緩存一部分,所以第二次重新編譯會比第一次編譯快非常非常多。
不過的確有一些我自己使用的方法能很好的提升編譯速度。
更好的利用固態(tài)
Unreal源碼加上PDB文件加上引擎本體,全部塞進固態(tài)硬盤對于很多朋友來說是不現(xiàn)實的。我自己構(gòu)建的Unreal加上中間生成的.obj文件.pch文件等等,總的大小已經(jīng)超過了300個G了。即使是官方構(gòu)建的版本,加上pdb文件也足足有100個G。如果固態(tài)硬盤空間足夠的話,將虛幻引擎直接放固態(tài)里自然是極好的。但是如果空間不夠的話可以考慮我的做法。
我的做法是將一些需要頻繁讀取的文件,比如Source/Runtime和Source/Editor兩個文件挪動到固態(tài)硬盤,然后通過軟連接連接回原來的位置,我們知道這兩個文件夾中涵蓋了絕大部分我們編譯時需要用到的頭文件,只要保證了這兩個文件夾的讀取速度就能極大的提升編譯性能了。這兩個文件夾加起來只有7個G左右,挪到固態(tài)硬盤是完全可以接受的。
熟悉Linux的朋友一定對符號鏈接不陌生。但是很少有人知道Windows其實也有類似的功能。你可以使用mklink來創(chuàng)建符號鏈接。
使用PCH
Unreal有SharedPCH和自定義PCH兩種模式。見Build.cs中PCHUsage和PrivatePCHHeaderFile兩個配置項。如果你使用自定義pch,確保你的pch中包含的頭文件比較合理。此外不管你采用哪種pch方式,確保你的.pch文件在固態(tài)硬盤中。
總結(jié):
總之,如果你有一個足夠大的固態(tài),你能解決大部分問題。如果你的固態(tài)硬盤不夠大。那么需要妥善的安排哪些文件應該放進固態(tài)中。
如果你沒有固態(tài)怎么辦?別折磨自己了,搞個固態(tài)吧,要么就別用C++了,多用藍圖或者藍圖的等效替代,比如看看這兩個項目
https://github.com/nxrighthere/UnrealCLR 使用C#代替藍圖
https://github.com/Tencent/puerts 使用TypeJS代替藍圖