Xcode Preferences -> Distributed Buildsで必要なすべてのオプションを設定しているにもかかわらず、Xcode 3.2.5 がデバイス ビルドを配布しないのに対し、シミュレータ ビルドは distcc で適切に配布されることもわかりました。
ただし、Xcode の制限を回避して、強制的にデバイス ビルドも配布することは可能です。デフォルトでデバイス分散ビルドを有効にしていないのは、Apple 側の見落とし (バグ!) のようです。
必要な手順は次のとおりです。
Xcode ユーザーのデフォルトPBXNumberOfParallelBuildSubtasksの値を増やします。これにより、並列ビルド タスクの最大数が制限され、デフォルトは CPU コアの数になります (詳細については、Apple 独自のXcode User Default Referenceドキュメントを参照してください)。次のように、2から16に増やしました。
write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 16
またはXcode 4.2の場合
defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 16
上記の変更を有効にするには、必ず Xcode を再起動してください。
man ページで説明されているように、 DISTCC_HOSTS環境変数に独自の値を設定する必要があります。distcc
これを行うには、独自のスクリプト内からDISTCC_HOSTSを設定する必要があります (これにより、元のバイナリが呼び出され、別の名前に変更されます)。Xcode は各コンパイル ユニットを呼び出し、各呼び出しの前にDISTCC_HOSTSを設定することに注意してください。したがって、このマスカレード スクリプトを使用して Xcode をオーバーライドする必要があります。/Developer/usr/bin/distcc
/Developer/usr/bin/distcc
/Developer/usr/bin/distcc
私自身のdistcc
スクリプトは次のとおりです (元のdistcc
バイナリの名前を に変更しましたdistcc.orig
)。
#!/bin/sh
export DISTCC_HOSTS="--randomize your list of hosts, each followed by ',cpp,lzo'"
/Developer/usr/bin/distcc.orig "$@"
exit $?
DISTCC_HOSTSを微調整するオプションはたくさんあります。特に、独自のローカルホストを使用して、すべてをファームするのではなく、コンパイルの一部を実行することに関しても同様ですが、少なくとも上記で始める必要があります。何が最適かは、お使いの Mac ハードウェアとネットワーク パフォーマンスによって明らかに異なります。
私自身の経験では、比較的低速なネットワーク上で 2 台のクアッドコア Mac と私自身のデュアルコア Mac で構成される分散型ビルド サーバー セットアップを使用すると、デバイスの完全な再ビルド時間が約 15 分から約 5 分に短縮されました。