Есть ли способ сделать
$ make
по умолчанию:
$ make -j 8
?
Есть ли способ сделать
$ make
по умолчанию:
$ make -j 8
?
alias make="make -j 8"
, предполагая bash shell
Задайте переменную среды MAKEFLAGS -j 8
. Если вы используете csh или tcsh, вы можете сделать это с помощью setenv MAKEFLAGS '-j 8'
. Если вы используете bash, вы можете сделать это с помощью export MAKEFLAGS='-j 8'
. Вы можете поместить эту команду в файл запуска оболочки, например,.cshrc или .bashrc(в вашем домашнем каталоге).
Предостережение: установка такого значения по умолчанию будет применяться ко всем вызовам make, в том числе, когда вы "создаете" проект, отличный от вашего, или запускаете script, который вызывает make. Если проект не был хорошо спроектирован, у него могут возникнуть проблемы, если он построен с параллельным выполнением нескольких заданий.
Ответы, предлагающие alias make='make -j 8'
, являются точными ответами на ваш вопрос.
Однако я бы рекомендовал не делать этого!
Во что бы то ни стало, используйте псевдоним для сохранения ввода - но назовите его чем-то иным, чем make
.
Это может быть хорошо для любого проекта, над которым вы сейчас работаете; но вполне возможно написать make файлы с отсутствующими зависимостями, которые не совсем корректно работают с -j
, и если вы столкнетесь с такой вещью, вам останется интересно, почему сборка не так загадочно для вас, но отлично работает для других человек.
(Тем не менее, если вы выполняете псевдоним make
, вы можете получить bash, чтобы игнорировать псевдоним, набрав \make
.)
Если вы используете командную строку, вы можете:
alias make='make -j 8'
Это будет временно, чтобы сделать его постоянным, вам нужно добавить его в .bashrc
Читайте здесь: http://www.linfo.org/make_alias_permanent.html
Добавить
MAKEOPTS='-j8'
MAKEFLAGS='-j8'
to /etc/make.conf
(создайте его, если он еще не существует).
Если это не сработает, добавьте
export MAKEOPTS='-j8'
export MAKEFLAGS='-j8'
к общесистемному профилю (например,/etc/profile).
Для меня, MAKEOPTS один не работал. Возможно, MAKEFLAGS - это все, что нужно.
Почему бы не создать внешний make файл, который вызывает другой make файл, подобный этому, он реплицируется из руководства здесь.
SUBDIRS = foo bar baz .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -j 8 -C [email protected] foo: baz
Если вы используете GNU make:
$ make --version
GNU Make 4.2.1
Built for x86_64-alpine-linux-musl
... тогда я обнаружил, что GNUMAKEFLAGS
кажется, работает:
export GNUMAKEFLAGS=-j8
make
Отказ от ответственности, я n00b с цепочкой инструментов C, так что извините, если это не переносимо. Это работает на Alpine Linux 3.8 (в Docker), хотя.
Вы можете переместить /usr/bin/make
в /usr/bin/make_orig
и сделать /usr/bin/make
этот script:
#!/bin/sh
/usr/bin/make_orig -j 8 [email protected]
Обязательно запустите chmod +x /usr/bin/make
.
Попробуйте этот метод, если более простой метод в моем другом ответе не работает. Этот метод не так безопасен и немного клонирован.