web-dev-qa-db-ja.com

Visual Studio 2010、マルチコアでプロジェクトを並行して構築する方法

私は40以上のプロジェクトで大きな解決策を持っています。それらのほぼ半分はテストプロジェクトです。私のプロジェクトでは、コードコントラクト、コード分析、スタイル分析の両方を使用しています。クアッドコアCPUに並列に依存しないプロジェクトを構築できるようにしたいと考えています。

プロジェクトを並行してビルドするようにmsbuildをセットアップするにはどうすればよいですか?

24
thomas nn

Visual Studioの場合:ツール|オプション|プロジェクトとソリューション|ビルドして実行します。これはデフォルトでCPUカウントになります。

コマンドラインから:msbuild /maxcpucount[:n](nが指定されていない場合、CPUカウントを使用します)。

16
Richard

次の方法で、ビルドをMSBuildで並行して起動できます。

  • BuildInParallelタスクの属性MSBuildtrueに設定します

    <Target Name="RunInParallel">
      <MSBuild BuildInParallel="true"
               Projects="@(Projects)"
               Targets="RunCodeAnalysis">
      </MSBuild>
    </Target>
    
  • または、パラメーター/maxcpucount:Xを指定してmsbuildを呼び出します。ここでXは、ビルドに関係するワーカープロセスの数を指定します。このソリューションは、ニーズにより適しています。

    msbuild [YourSolutionFile.sln] /maxcpucount:4 /p:Platform=AnyCpu;Configuration=Debug;
    

Scott Hanselmanは、外部ツールとしてプロセスをVisual Studioに(ちょっと)統合したい場合は、 投稿 と書いています。


C++プロジェクトの場合、VisualStudioで直接マルチプロセッサビルドを構成できます。

Tools | Options | Projects and Solutions | Build and Run

13
Julien Hoarau

並列コンパイルする-jスイッチをサポートするnmakeのクローンがあることを私は知っています:

http://qt.gitorious.org/qt-labs/jom

また、MSbuildのハックもあります。グーグルで検索してください。また、複数のマシンやおそらく複数のコアでのビルドをサポートするツールがあることも知っていますが、現時点ではその名前を覚えていません。

お役に立てれば。

4
kashif

次に、探している本当の答えは、/ MPコンパイラフラグをCXXコンパイラフラグに追加することです。

VisualStudioの場合プロジェクトのプロパティページ> C\C++>一般的なマルチプロセッサのコンパイルで、「はい」(/ MP)と入力します。これで、40個のプロジェクトすべてが各コアで並行して構築されます。

3
octi

これは、C++だけでなく、すべての言語のVisual Studio11に組み込まれています。 「VisualStudio2010には、「並列プロジェクトビルドの最大数」のオプションが含まれていました。制限の兆候はありませんでしたが、このIDEオプションはC++プロジェクトでのみ機能しました。幸い、この制限はなくなりました。 www.visualstudiomagazine.com からVisual Studio 11 "に適用されます

2
Aligned