Команда оболочки make -j
выполняет команды Makefile параллельно, что полезно на современных многоядерных процессорах. Можно ли вызвать такой параллелизм из в Makefile?
От руководство для Gnu make я лучше всего предполагаю, что основной Makefile используется только как оболочка, которая передает -j
суб-производителя, который выполняет реальную работу. Но, возможно, есть какая-то переменная среды, или точечный файл, или внутренняя переменная, или другая неуглубляемая ругань способ сделать это.
Можно ограничить количество рабочих мест, например. -j $$(nproc)
.
Возможно Linux, но не обязательно.
(Добавление чего-то вроде alias make="make -j"
в ~ / .bashrc слишком опасно; решение о том, следует ли выполнять распараллеливание, должно приниматься для каждого файла Makefile, а не для пользователя.)
1 ответ
Вы можете добавить в MAKEFLAGS из самого make-файла, например:
MAKEFLAGS += --jobs=$(CPUS)
Где CPUS определен в make-файле.