52

VS 2010に複数のC++コンパイルプロセスを一度に実行させるにはどうすればよいですか?私はオブジェクトモジュールを並列に構築することを意味します。私は一度に複数のプロジェクトを構築することに興味がありません(ツール>オプション>ビルドと実行について知っています<並列プロジェクトの最大数ですが、それは私の望むことではありません)。Visual Studio 2010で並列ビルドを行うにはどうすればよいですか?

基本的に、私はVisual Studioの "make -jN"に相当するものを探しています。

+1

http://msdn.microsoft.com/en-us/library/bb385193.aspx – Necrolis

+0

だけで欠けたぶんこのことができます[リンク](HTTPを見つけます。 msdn.com/b/visualstudio/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx) – ervinbosenbacher

答えて

30
  1. ツール - ロススミスはコメントで言ったよう

また、VC++プロジェクトの設定

  • 最大同時C++のコンパイル\>オプション
  • プロジェクトおよびソリューションは、あなたもオンにする必要がありますプロジェクトの "マルチプロセッサコンパイル"オプション:

    1. プロジェクトプロパティ
    2. 設定プロパティ> C/C++>一般
    3. マルチプロセッサコンパイル
    4. 利益!
  • +2

    これは何の効果もありません。 0(デフォルトでは、「すべてのコアを使用」を意味する)または4(実際のコア数)に設定しても差はなく、一度に1つのモジュールしか構築されません。 –

    +1

    @Ross:この種の並列ビルディングが有効な場合、コンソール出力には表示されません(プロジェクト並列ビルドとは異なります)。タスクマネージャーを見て、それが起こっていないことを確認しましたか、コンソールに何も表示されていませんか?コアと同じ数の 'cl.exe'が表示されます。 –

    +0

    プロセスエクスプローラで監視しましたが、cl.exeプロセスは1つしかなく、4つのコアのうちの1つだけを実行しています。 –

    3

    jomはあなたが探しているツールです。

    ウィキからで:http://qt-project.org/wiki/jom

    JOMは、並行して複数の の独立したコマンドの実行をサポートするために、NMAKEのクローンです。基本的にGNU makeに似た-jコマンド ラインスイッチを追加しています。ドキュメントのほとんどはQtライブラリをスピードアップしようとしているQtの開発を目的とした窓の上に構築されている間

    、JOMは、限り、あなたはNMAKE互換性のあるメイクファイルを持っているように、あまりにも非Qtのプロジェクトで完璧に動作するはずです。

    wikiページにはダウンロード可能なバイナリがあり、nmakeと同じようにjomを呼び出します。

    +0

    残念ながら、ジョムはかなりバギーであり、プロセスが世界の終わりまでぶら下がってしまったということはよくありません。 – Lothar

    14

    Necrolisのコメントは正しい解決策であるようです。

    /MP (Build with Multiple Processes)

    /MPオプションは別のプロセスで 自体、それぞれの1つ以上のコピーを作成するためのコンパイラを引き起こします。これらのコピーは同時に ソースファイルをコンパイルします。結果として、 のソースファイルを構築するための合計時間を大幅に短縮することができます。例えば便利

    プロジェクトレベルでそれを設定することができます(したがって、それはその中のすべてのファイルに適用されます)注だけでなく、個々のファイルに、あなたは#importを使用する必要がある場合。

    特に、/ MPは通常、プリコンパイル済みヘッダー、または#importを使用するソースと互換性がありません。この場合には、あなたはまだプロジェクトに/ MPフラグを設定し、その単一のファイル(通常は、stdafx.cpp、との#importを使用して任意のファイル)で、クリアすることができます。ここで

    4

    は私が をやったことある)[ツール] - > [オプション]より「プロジェクトとソリューション」に行く - >「ビルドして実行」私にとって、それはコア数を持っていました。最初はこれが私がする必要があると思っていましたが、それはありません

    2)あなたのプロジェクトを右クリックし、プロパティを選択します。 「構成プロパティ」 - >「C/C++」 - >「コマンドライン」の下に/MP4と入力します。ここで4は、使用しているコアの数です。互換性のないフラグについての警告が表示されますので、別の手順があります。

    3)「構成プロパティ」 - >「C/C++」 - >「コード生成」の下にある「最小再構築を有効にする」に進みます。それをnoに変更してください。

    リビルドすると、タスクマネージャに複数のCLプロセスが表示されます。

    15

    VSは、マルチスレッドを使用して構築させるために設定しなければならない2つのスイッチがあります(両方ともプロジェクト固有):

    • プロジェクトプロパティ - > C/C++ - >一般 - >マルチプロセッサコンパイルセットへ:はい(/ MP)
    • プロジェクトプロパティ - > C/C++ - >コードGeneration->にリビルドセットを有効にします。ません(/ GM-)

    ツール - >オプション - >プロジェクトとソリューション - > VC++プロジェクト設定 - >最大同時実行C++コンパイルの設定もチェックしてください。デフォルト値は0で、これによりVSはできるだけ多くのコンカレットコンパイルを使用できます。

    +2

    マルチプロセッサコンパイルを使用するには、最小限の再構築をいつ無効にする必要がありますか? –

    +0

    常に互換性がないためです。 – dimon4eg

    0

    私は見る!あなたの要件は、並列スレッドで単一のプロジェクトを構築することです。 。//ブログ:

    は、私は非常に便利なプラグイン Shark compiler Control

    関連する問題