Как я могу сделать параллельную сборку в Visual Studio 2010? - PullRequest
53 голосов
/ 30 мая 2011

Как заставить VS 2010 запускать более одного процесса компиляции C ++ одновременно?Я имею в виду параллельное построение объектных модулей;Меня не интересует создание более одного проекта за раз (я знаю об инструментах> Параметры> Построить и запустить <Максимальное количество параллельных сборок проектов, но это не делает то, что я хочу). </p>

По сути, я ищу в Visual Studio эквивалент "make -jN".

Ответы [ 6 ]

33 голосов
/ 30 мая 2011
  1. Инструменты -> Параметры
  2. Проекты и решения \ Настройки проекта VC ++
  3. Максимальное число одновременных компиляций C ++

Кроме того, как сказал Росс Смит вкомментарии, вам также необходимо включить опцию «Многопроцессорная компиляция» в проекте:

  1. Свойства проекта
  2. Свойства конфигурации> C / C ++> Общие
  3. Multi-Процессорная компиляция
  4. Прибыль!
18 голосов
/ 09 декабря 2012

Для построения VS с использованием многопоточности необходимо установить два переключателя (оба зависят от проекта):

  • свойства проекта-> C / C ++ -> Общие -> Многопроцессорная компиляция , установленная в: Да (/ MP)
  • свойства проекта-> C / C ++ -> Генерация кода -> Включить минимальное перестроение , установленное в: Нет (/ Gm -)

Проверьте также Ваши Инструменты-> Параметры-> Проекты и решения-> Настройки проекта VC ++ -> Максимальное число одновременных компиляций C ++ * Настройка 1018 *. Значение по умолчанию равно 0, что позволяет VS использовать как можно больше параллельных компиляций.

15 голосов
/ 06 апреля 2012

Комментарий Некролиса кажется правильным решением.

/ MP (сборка с несколькими процессами)

Параметр / MP заставляет компилятор создавать одну или несколько копий сам, каждый в отдельном процессе. Эти копии одновременно скомпилируйте исходные файлы. Следовательно, общее время для исходные файлы могут быть значительно уменьшены.

Обратите внимание, что вы можете установить его на уровне проекта (и, следовательно, он будет применяться ко всем файлам в нем), а также к отдельным файлам, полезно, например, если вам нужно использовать #import.

В частности, / MP обычно несовместим с предварительно скомпилированными заголовками или источниками, использующими #import; в этом случае вы все равно можете установить флаг / MP в проекте, а затем очистить его для отдельных файлов (обычно это stdafx.cpp и любой файл, использующий #import).

4 голосов
/ 11 апреля 2012

Вот что я сделал

1) Перейдите в Tools-> Options, чем в «Project And Solutions» -> «Build And Run», для меня в нем было количество ядер.Хотя сначала я подумал, что это все, что мне нужно сделать, но это не

2) Щелкните правой кнопкой мыши свой проект и выберите свойства.В «свойствах конфигурации» -> «C / C ++» -> «Командная строка» введите /MP4, где 4 - это количество ядер, которое у вас есть.Вы получите предупреждение о несовместимости флагов, поэтому у нас есть еще один шаг

3) Перейдите в раздел «Свойства конфигурации» -> «C / C ++» -> «Генерация кода», где есть «Включить минимальное перестроение».».Измените его на №.

Перестройте, и вы увидите несколько процессов CL в вашем диспетчере задач.

3 голосов
/ 06 апреля 2012

Джом это инструмент, который вы ищете.

Из вики по адресу: http://qt -project.org / wiki / jom

jom - клон nmake для поддержки выполнения нескольких независимые команды параллельно. Это в основном добавляет команду -j Линейный переключатель, аналогичный GNU make.

Хотя большая часть документации предназначена для разработчиков Qt, пытающихся ускорить сборку библиотеки Qt под Windows, jom должен отлично работать и в проектах, не относящихся к Qt, если у вас есть совместимый с nmake make-файл.

На вики-странице есть бинарные файлы, которые вы можете скачать, и вы называете jom, как если бы вы делали это.

0 голосов
/ 21 марта 2014

Понятно!Ваше требование состоит в построении одного проекта в параллельных потоках.

Я считаю Плагин управления компилятором Shark Плагин очень полезен

...