Есть ли способ сделать
$ 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.
Попробуйте этот метод, если более простой метод в моем другом ответе не работает. Этот метод не так безопасен и немного клонирован.