web-dev-qa-db-ja.com

Visual Studio 2010で並列ビルドを実行するにはどうすればよいですか?

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

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

54
Ross Smith
  1. ツール->オプション
  2. Projects and Solutions\VC++プロジェクト設定
  3. 最大同時C++コンパイル

また、ロススミスがコメントで述べたように、プロジェクトの「マルチプロセッサコンパイル」オプションもオンにする必要があります。

  1. プロジェクトのプロパティ
  2. 構成プロパティ> C/C++>一般
  3. マルチプロセッサのコンパイル
  4. 利益!
34
Billy ONeal

マルチスレッドを使用してVSビルドを行うために設定する必要がある2つのスイッチがあります(両方ともプロジェクト固有です)。

  • プロジェクトプロパティ-> C/C++->全般-> マルチプロセッサコンパイルに設定:はい(/ MP)
  • プロジェクトプロパティ-> C/C++->コード生成-> 最小再構築を有効にする設定:No(/ Gm-)

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

18
jskierbi

ネクロリスのコメントは正しい解決策のようです。

/ MP(複数プロセスでビルド)

/ MPオプションを使用すると、コンパイラーは、それぞれが個別のプロセスで1つ以上のコピーを作成します。これらのコピーは、ソースファイルを同時にコンパイルします。その結果、ソースファイルをビルドする合計時間を大幅に短縮できます。

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

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

15
rob

これが私がしたことです

1)[プロジェクトとソリューション]-> [ビルドと実行]の下にある[ツール]-> [オプション]に移動します。コアの数があります。最初はこれで十分だと思ったが、そうではない

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

3)「構成プロパティ」->「C/C++」->「コード生成」の下に移動し、「最小再構築を有効にする」があります。いいえに変更します。

再構築すると、タスクマネージャーに複数のCLプロセスが表示されます。

4
user34537

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

Wikiから: http://qt-project.org/wiki/jom

jomはnmakeのクローンで、複数の独立したコマンドの並列実行をサポートします。基本的に、GNU makeと同様の-jコマンドラインスイッチを追加します。

ほとんどのドキュメントは、WindowsでのQtライブラリのビルドを高速化しようとするQt開発者を対象としていますが、nmake互換のメイクファイルがある限り、jomはQt以外のプロジェクトでも完全に機能します。

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

3
Rian Sanderson

そうですか!要件は、単一のプロジェクトを並列スレッドで構築することです。

Shark compiler Control プラグインは非常に便利です

0
Digital_Reality