Подтвердить что ты не робот

Параллельный make: set -j8 как опция по умолчанию

Я могу задать количество потоков для процесса сборки, используя аргумент -j. Например, у меня 4 ядра +4 виртуальных. Когда я пишу: make -j8, скорость увеличивается 4 раза.

Можно ли установить это значение по умолчанию? (Например, в Linux Gentoo, в файле конфигурации, можно установить это значение по умолчанию).

p.s. У меня Arch Linux

4b9b3361

Ответ 1

Ваш вопрос касается не потоков, а процессов (заданий), выполняемых make.

Простой способ установить это, когда make используется с консоли, добавляется:

alias make="/usr/bin/make -j 8"

в ваш .profile файл.

Вы также можете использовать setenv MAKEFLAGS '-j 8', но MAKEFLAGS может игнорировать этот параметр в некоторых сценариях, потому что для поддержания необходимого количества процессов требуется связь с рекурсивными вызовами make. К счастью, этот метод работает с текущими версиями GNU Make.

Ответ 2

setenv MAKEFLAGS '-j8'

Надеюсь, это поможет!

Ответ 3

Вот как я это сделал:

CORES ?= $(shell sysctl -n hw.ncpu || echo 1)

all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…

Я в основном "сшил" мою целевую цель по умолчанию all до "private" _all. Команда для определения количества ядер зависит от OSX, AFAIK, поэтому вы можете просто улучшить ее, чтобы быть более кросс-платформой, если хотите. И из-за назначения ?= мы можем просто переопределить его с помощью переменной env, если/когда это необходимо.

EDIT:

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

CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…