Как я могу сделать параллельную сборку в Visual Studio 2010?
Как заставить VS 2010 запускать более одного процесса компиляции C++ одновременно? Я имею в виду параллельное построение объектных модулей; Я не заинтересован в создании более одного проекта за раз (я знаю об инструментах> Параметры> Построить и запустить <Максимальное количество параллельных сборок проектов, но это не делает то, что я хочу).
По сути, я ищу эквивалент Visual Studio для "make -jN".
6 ответов
- Сервис -> Параметры
- Проекты и решения \ Настройки проекта VC++
- Максимальное количество одновременных компиляций C++
Кроме того, как сказал Росс Смит в комментариях, вам также нужно включить опцию "Многопроцессорная компиляция" в проекте:
- Свойства проекта
- Свойства конфигурации> C/C++ > Общие
- Многопроцессорная компиляция
- Прибыль!
Для создания VS с использованием многопоточности необходимо установить два параметра (оба зависят от проекта):
- свойства проекта->C/C++->General-> Многопроцессорная компиляция, установленная в: Да (/MP)
- свойства проекта- > C / C++ -> Генерация кода- > Включить минимальное перестроение, установленное в: Нет (/Gm-)
Проверьте также Ваши Инструменты-> Параметры-> Проекты и решения-> Настройки проекта VC++-> Параметр максимального числа одновременных компиляций C++. Значение по умолчанию равно 0, что позволяет VS использовать как можно больше параллельных компиляций.
Комментарий Некролиса кажется правильным решением.
/MP (сборка с несколькими процессами)
Параметр /MP заставляет компилятор создавать одну или несколько своих копий, каждая в отдельном процессе. Эти копии одновременно компилируют исходные файлы. Следовательно, общее время создания исходных файлов может быть значительно сокращено.
Обратите внимание, что вы можете установить его на уровне проекта (и, следовательно, он будет применяться ко всем файлам в нем), а также к отдельным файлам, полезно, например, если вам нужно использовать #import
,
В частности, /MP обычно не совместим с предварительно скомпилированными заголовками или источниками, использующими #import
; в этом случае вы все равно можете установить флаг /MP в проекте, а затем очистить его для отдельных файлов (обычно это stdafx.cpp и любой файл, использующий #import).
Вот что я сделал
1) Зайдите в Tools->Options, чем в "Project And Solutions"->"Build And Run", для меня в нем было количество ядер. Хотя сначала я думал, что это все, что мне нужно было сделать, но это не так
2) Щелкните правой кнопкой мыши свой проект и выберите свойства. Под "свойствами конфигурации"->"C/C++"->"Командная строка" введите /MP4
где 4 - количество ядер, которые у вас есть. Вы получите предупреждение о несовместимости флагов, поэтому у нас есть еще один шаг
3) Перейдите в раздел "Свойства конфигурации"->"C/C++"->"Генерация кода", где находится "Включить минимальное перестроение". Измени это на нет.
Перестройте, и вы должны увидеть несколько процессов CL в вашем диспетчере задач.
Джом это инструмент, который вы ищете.
Из вики по адресу: http://qt-project.org/wiki/jom
jom - это клон nmake для поддержки параллельного выполнения нескольких независимых команд. Он в основном добавляет ключ командной строки -j, аналогичный GNU make.
Хотя большая часть документации предназначена для разработчиков Qt, пытающихся ускорить сборку библиотеки Qt на окнах, jom должен отлично работать и в проектах, не относящихся к Qt, если у вас есть совместимый с nmake make-файл.
На вики-странице есть бинарные файлы, которые вы можете скачать, и вы называете jom, как если бы это было сделано.
Я вижу! Ваше требование заключается в построении одного проекта в параллельных потоках.
Я считаю плагин управления компилятором Shark очень полезным