我在xcode中編譯了幾個需要大量內存來編譯的文件(+1 GB /文件)。因爲我在雙核筆記本電腦上這樣做,xcode使用2個線程來構建。這兩個線程最終將構建同時佔用大量內存的文件,因此係統遭受內存不足,編譯程序幾近中止。如何更改Xcode中的構建線程數量?
對我來說足夠的解決方案是強制Xcode只使用一個構建線程。有人知道一種方法來改變Xcode使用的構建線程數量嗎?
對於那些有興趣的人來說,C++文件包含一個可調整的boost :: spirit :: qi解析器。
我在xcode中編譯了幾個需要大量內存來編譯的文件(+1 GB /文件)。因爲我在雙核筆記本電腦上這樣做,xcode使用2個線程來構建。這兩個線程最終將構建同時佔用大量內存的文件,因此係統遭受內存不足,編譯程序幾近中止。如何更改Xcode中的構建線程數量?
對我來說足夠的解決方案是強制Xcode只使用一個構建線程。有人知道一種方法來改變Xcode使用的構建線程數量嗎?
對於那些有興趣的人來說,C++文件包含一個可調整的boost :: spirit :: qi解析器。
Xcode用於執行任務的線程數由PBXNumberOfParallelBuildSubtasks
選項控制。您可以使用以下命令更改它: - defaults write com.apple.Xcode <key> <value>
。例如:
defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 8
有關更多詳細信息,請參見Xcode User Defaults。
還有很多其他方法可以加速編譯,從預編譯頭到分佈式構建。有關詳細信息,請閱讀Reducing Build Times。
祝你好運!
單個構建任務不應該兩次執行相同的工作,而且肯定不會同時進行!將大量常見代碼分解成靜態庫,以便只有在更改時才能重新編譯。在靜態庫中設置應用程序中的目標依賴項,並在靜態庫產品中鏈接。然後,對其他應用程序的更改將不再需要重新構建靜態庫,這將大大加快構建時間。
嘗試在整個操作Xcode之前耗盡所有項目級解決方案。將Xcode癱瘓到僅使用一個線程太容易,忘記在轉移到新項目時將其更改回來。未通過預置接口公開Xcode User Default Reference文件很多選項,包括:
PBXNumberOfParallelBuildSubtasks(正整數)
這可以讓你的Xcode限制每個只用ň構建線程項目編譯。
BuildSystemCacheSizeInMegabytes(正整數,默認1024)
BuildSystemCacheMinimumRemovalAgeInHours(正整數,默認24)
,JVC在PCH緩存大小和保留時間可以幫助加快你的構建。
這不是一回事,它們實際上是一些編譯內存很大的文件。同樣的文件也被構建兩次,因爲Xcode構建了一個64位版本和一個32位版本,然後再合併它們。由於我目前正在處理這些文件,所以靜態庫對我無能爲力。感謝您的回答,但PBXNumberOfParallelBuildSubtasks正是我所需要的。一個更持久的解決方案是爲我的PC添加一些內存,但我沒有意識到編譯任務可能佔用那麼多內存。 – 2010-12-03 18:13:07
對於Xcode的4必須設置IDEBuildOperationMaxNumberOfConcurrentCompileTasks用戶默認,例如:
defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4
注意 「DT」。這不會影響命令行上的xcodebuild。要做到這一點,使用類似
xcodebuild -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=4 ...
(見http://lists.apple.com/archives/xcode-users/2011/Apr/msg00403.html和http://lists.apple.com/archives/xcode-users/2011/Jul//msg00377.html)
在Xcode 5,你可以使用-parallelizeTargets
和-jobs NUMBER
與xcodebuild
。據xcodebuild --help
:
-parallelizeTargets build independent targets in parallel -jobs NUMBER specify the maximum number of concurrent build operations
這正是我一直在尋找,非常感謝你。另外減少構建時間的部分是一個有趣的閱讀。 – 2010-12-03 18:05:46
鏈接不再工作 – Remover 2016-01-05 17:01:53
試試這個默認寫入com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks``sysctl -n hw.ncpu`` – Maximelc 2017-05-30 11:31:41