Visual Studio 2010, как строить проекты параллельно на многоядерных - PullRequest
24 голосов
/ 17 мая 2010

У меня есть большое решение с более чем 40 проектами. Почти половина из них - тестовые проекты. В моем проекте мы используем оба контракта кода, анализ кода, анализ стиля. Я хочу иметь возможность создавать проекты, которые не зависят параллельно от моего четырехъядерного процессора.

Как настроить msbuild для параллельной сборки проектов?

Ответы [ 5 ]

16 голосов
/ 17 мая 2010

В Visual Studio: Инструменты | Варианты | Проекты и решения | Построй и беги. По умолчанию это должно соответствовать количеству процессоров.

Из командной строки: msbuild /maxcpucount[:n] (если n не указано, то будет использоваться счетчик ЦП).

13 голосов
/ 17 мая 2010

Вы можете запустить сборку в MSBuild параллельно:

  • Установка атрибута BuildInParallel из MSBuild для задачи true

    <Target Name="RunInParallel">
      <MSBuild BuildInParallel="true"
               Projects="@(Projects)"
               Targets="RunCodeAnalysis">
      </MSBuild>
    </Target>
    
  • Или вызов msbuild с параметром /maxcpucount:X, где X указывает число рабочих процессов, участвующих в сборке. Это решение лучше соответствует вашим потребностям.

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

Скотт Хансельман написал пост об этом, если вы хотите интегрировать (своего рода) процесс в Visual Studio как внешний инструмент.


Для проектов C ++ вы можете настроить многопроцессорную сборку непосредственно в Visual Studio:

Tools | Options | Projects and Solutions | Build and Run

4 голосов
/ 17 мая 2010

Я знаю, что есть клон nmake, который поддерживает ключ -j для параллельной компиляции:

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

и есть взлом для MSbuild, просто погуглите его. Я также знаю, что есть инструмент, который поддерживает сборку на нескольких машинах и, возможно, на нескольких ядрах, но я не помню его название на данный момент.

надеюсь, это поможет.

3 голосов
/ 02 мая 2012

Тогда реальный ответ, который вы ищете, это добавить флаг компилятора / MP к флагам компилятора CXX.

В Visual Studio На странице свойств проекта> C \ C ++> Общие сведения Компиляция многопроцессорной системы просто введите Да (/ MP). Теперь он будет строить все 40 проектов параллельно на каждом из ядер

2 голосов
/ 03 мая 2012

Это теперь встроено в Visual Studio 11 для всех языков, а не только для C ++. «В Visual Studio 2010 включена опция« максимальное количество параллельных сборок проектов ». Несмотря на то, что не было никаких указаний на какие-либо ограничения, эта опция IDE работала только для проектов C ++. К счастью, это ограничение больше не применяется к Visual Studio 11» с www.visualstudiomagazine.com

...