Параллельное make: установите -j8 в качестве опции по умолчанию
Я могу установить количество потоков для процесса сборки, используя -j
аргумент. Например у меня 4 ядра +4 виртуальных. Когда я пишу: make -j8
скорость увеличивается в 4 раза.
Можно ли установить это значение по умолчанию? (Например, в Linux Gentoo в файле конфигурации можно установить это значение по умолчанию).
PS У меня есть Arch Linux
3 ответа
Ваш вопрос не о потоках, а о процессах (заданиях), выполняемых make.
Простой способ установить это, когда make используется из консоли, это добавить:
alias make="/usr/bin/make -j 8"
на ваш .profile
файл.
Вы также можете использовать setenv MAKEFLAGS '-j 8'
, но MAKEFLAGS
может игнорировать этот параметр в некоторых сценариях, потому что поддержание желаемого количества процессов требует взаимодействия с рекурсивным make
звонки. К счастью, этот метод работает с текущими версиями GNU Make.
Вот как я это сделал:
CORES ?= $(shell sysctl -n hw.ncpu || echo 1)
all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…
Я в основном "псевдоним" моя цель по умолчанию all
для "частного" _all
, Команда для определения количества ядер зависит от OSX, AFAIK, так что вы можете просто улучшить ее, чтобы сделать ее кроссплатформенной, если хотите. И из-за ?=
присваивание, мы можем просто переопределить его с помощью переменной env, если и когда это необходимо.
РЕДАКТИРОВАТЬ:
Вы также можете добавить в свой MAKEFLAGS
из самого make-файла, вот так:
CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…