Visual Studio 2010, как строить проекты параллельно на многоядерных
У меня есть большое решение с более чем 40 проектами. Почти половина из них - тестовые проекты.
В моем проекте мы используем как Code Contracts, Code Analysis, Style Analysis.
Я хочу, чтобы иметь возможность строить проекты, которые не зависят параллельно на моем четырехъядерном процессоре.
Как настроить msbuild для параллельной сборки проектов?
Ответы
Ответ 1
В Visual Studio: Инструменты | Варианты | Проекты и решения | Построить и запустить. Это должно быть указано по умолчанию для вашего процессора.
Из командной строки: msbuild /maxcpucount[:n]
(is n не указан, тогда он будет использовать подсчет CPU).
Ответ 2
Вы можете запустить сборку в 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;
Скотт Хансельман написал сообщение
, если вы хотите интегрировать (kinda) процесс в Visual Studio в качестве внешнего инструмента.
Для проектов на С++ вы можете настроить многопроцессорную сборку непосредственно в Visual Studio:
Tools | Options | Projects and Solutions | Build and Run
Ответ 3
Я знаю, что есть клон nmake, который поддерживает -j-переключатель для компиляции параллельно:
http://qt.gitorious.org/qt-labs/jom
и есть также взлом для MSbuild, просто Google. Я также знаю, что есть инструмент, который поддерживает создание на нескольких машинах и, возможно, также на нескольких ядрах, но я не помню его имени на данный момент.
надеюсь, что это поможет.
Ответ 4
Тогда реальный ответ, который вы ищете, - это добавить флаг компилятора /MP в флагов компилятора CXX.
В Visual Studio На странице свойств проектa > C\С++ > Общая многопроцессорная компиляция просто введите Да (/MP). Теперь он будет строить все 40 проектов параллельно на каждом из ядер
Ответ 5
Теперь это встроено для Visual Studio 11 для всех языков, а не только для С++.
"Visual Studio 2010 включил опцию" Максимальное количество параллельных проектов ". Несмотря на отсутствие каких-либо ограничений, этот вариант IDE работал только для проектов на С++. К счастью, это ограничение больше не применяется к Visual Studio 11" из www.visualstudiomagazine.com