имитировать make -j из Makefile

Команда оболочки make -j выполняет команды Makefile параллельно, что полезно на современных многоядерных процессорах. Можно ли вызвать такой параллелизм из в Makefile?

От руководство для Gnu make я лучше всего предполагаю, что основной Makefile используется только как оболочка, которая передает -j суб-производителя, который выполняет реальную работу. Но, возможно, есть какая-то переменная среды, или точечный файл, или внутренняя переменная, или другая неуглубляемая ругань способ сделать это.

Можно ограничить количество рабочих мест, например. -j $$(nproc).

Возможно Linux, но не обязательно.

(Добавление чего-то вроде alias make="make -j" в ~ / .bashrc слишком опасно; решение о том, следует ли выполнять распараллеливание, должно приниматься для каждого файла Makefile, а не для пользователя.)

1 ответ
1

Вы можете добавить в MAKEFLAGS из самого make-файла, например:

MAKEFLAGS += --jobs=$(CPUS)

Где CPUS определен в make-файле.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *