22

コンパイルに大量のメモリを必要とするいくつかの C++ ファイルを xcode で作成しています (+1 GB / ファイル)。デュアル コア ラップトップでこれを行うため、xcode はビルドに 2 つのスレッドを使用します。2 つのスレッドは最終的に大量のメモリを同時に消費するファイルを構築するため、システムはメモリ不足に陥り、コンパイルはほぼ停止します。

私にとって十分な解決策は、Xcode にビルド スレッドを 1 つだけ使用させることです。Xcodeが使用するビルドスレッドの数を変更する方法を知っている人はいますか?

興味のある方のために、C++ ファイルにはかなりの boost::spirit::qi パーサーが含まれています。

4

4 に答える 4

24

Xcode がタスクを実行するために使用するスレッドの数は、PBXNumberOfParallelBuildSubtasksオプションによって制御されます。次のコマンドで変更できます: - defaults write com.apple.Xcode <key> <value>. 例えば:

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 8

詳細については、 Xcode ユーザーのデフォルトを参照してください。

プリコンパイル済みヘッダーから分散ビルドまで、コンパイルを高速化する方法は他にもたくさんあります。詳細については、ビルド時間の短縮を参照してください。

幸運を!

于 2010-12-03T14:17:46.917 に答える
12

XCode 5 では、 と を使用-parallelizeTargetsでき -jobs NUMBERますxcodebuild。によるとxcodebuild --help

-parallelizeTargets     build independent targets in parallel
-jobs NUMBER            specify the maximum number of concurrent build operations
于 2014-09-19T08:42:52.107 に答える
4

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を参照) )

于 2011-07-31T23:03:46.983 に答える
1

1 つのビルド タスクで同じ作業を 2 回行うべきではありません。同時に行うべきではありません。大量の共通コードを静的ライブラリに分解して、変更された場合にのみ再コンパイルできるようにします。アプリケーションのターゲット依存関係を静的ライブラリに設定し、静的ライブラリ プロダクトにリンクします。アプリケーションの残りの部分を変更しても、静的ライブラリを再構築する必要がなくなり、ビルド時間が大幅に短縮されます。

Xcode 全体を操作する前に、すべてのプロジェクト レベルのソリューションを使い果たすようにしてください。Xcode を 1 つのスレッドのみを使用するように不自由にし、新しいプロジェクトに移ったときにそれを元に戻すのを忘れてしまうのはあまりにも簡単です。Xcode User Default Referenceには、Preferences インターフェースを介して公開されていない多くのオプションが記載されています。

  • PBXNumberOfParallelBuildSubtasks (正の整数)

    これにより、Xcode がコンパイルするすべてのプロジェクトでnビルド スレッドのみを使用するように制限できます。

  • BuildSystemCacheSizeInMegabytes (正の整数、デフォルトは 1024)

  • BuildSystemCacheMinimumRemovalAgeInHours (正の整数、デフォルトは 24)

    PCH キャッシュ サイズと保持時間を増やすと、ビルドの速度が向上する可能性があります。

于 2010-12-03T14:19:56.073 に答える