Как использовать все ядра для nmake?
Я только что получил новый четырехъядерный компьютер и заметил, что nmake использует только один процесс.
Раньше я использовал make, у которого был переключатель -j4 для запуска 4 процессов. Что такое эквивалент nmake?
[править]
Основываясь на приведенной ниже информации, я смог добавить команду в файл проекта qmake:
QMAKE_CXXFLAGS + =/MP
Который эффективно сделал это для меня. Большое спасибо.
Ответы
Ответ 1
Согласно MSDN, нет такой опции для nmake
.
Однако вы можете заставить компилятор строить несколько файлов параллельно, используя параметр /MP
с компилятором командной строки VС++ и одновременно передавая несколько файлов:
> cl /MP a.cpp b.cpp c.cpp
Однако обратите внимание, что большинство Make файлов не вызывают такой компилятор: они обычно вызывают отдельный компилятор для каждого отдельного исходного файла, что предотвращает использование /MP
ничего полезного.
Ответ 2
Другим общим, не связанным с Qt способом сказать nmake
, чтобы использовать все ядра, является установка переменной окружения CL
на /MP
:
set CL=/MP
nmake
будет использовать все ядра ЦП.
Ответ 3
В QT есть инструмент для этого
http://qt.gitorious.org/qt-labs/jom
Ответ 4
CMake 2.8.1 RC1, так как на момент написания этого он готов попробовать, приносит новый генератор для NMake, который называется NMake Makefiles JOM, и он генерирует NMake с определенными настройками для jom, что является снижением замены NMake. Таким образом, он дает возможность создания многопроцессорной обработки с использованием NMake.
Ответ 5
Incredibuild утверждает, что сможет запускать nmake на нескольких ядрах/нескольких машинах. У меня нет опыта.
Ответ 6
Быстрый поиск в googling дает: http://msdn.microsoft.com/en-us/library/bb385193.aspx
Ответ 7
Это не работает для обычных файлов make файлов, но в Visual Studio 2005 есть параметр, который позволяет одновременно создавать более одного файла .vcproj(при условии, что он не зависит от другого). Инструменты → Параметры → Проекты и решения → Сборка и запуск → X максимальное количество параллельных проектов.