Сделать" make "по умолчанию" make-J 8"
есть ли способ, что я могу сделать
$ make
по умолчанию:
$ make -j 8
?
7 ответов
установите переменную среды MAKEFLAGS в -j 8
. Если вы используете csh или tcsh, вы можете сделать это с помощью setenv MAKEFLAGS '-j 8'
. Если вы используете bash, вы можете сделать это с помощью export MAKEFLAGS='-j 8'
. Возможно, вы захотите поместить эту команду в файл запуска вашей оболочки, например .cshrc или .bashrc (в вашем домашнем каталоге).
внимание: установка по умолчанию, как это будет применяться ко всем вызовам make, в том числе, когда вы "сделать" проект, отличный от вашего собственного или запустить сценарий, который вызывает make. Если проект был не хорошо спроектированный, он может иметь проблемы, когда он построен с несколькими заданиями, выполняемыми параллельно.
ответы предложив alias make='make -j 8'
прекрасные ответы на ваш вопрос.
тем не менее, я бы рекомендовал не делать этого!
безусловно, используйте псевдоним, чтобы сохранить ввод-но назовите его чем-то другим, кроме make
.
это может быть нормально для любого проекта, над которым вы сейчас работаете; но вполне возможно написать makefiles с отсутствующими зависимостями, которые не совсем правильно работают с -j
, а если вы столкнетесь с такой вещью, вы останетесь интересно, почему сборка терпит неудачу таинственным образом для вас, но отлично работает для других людей.
(что сказал, Если ты do псевдоним 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-это все, что нужно.
почему бы не создать внешний makefile, который вызывает другой makefile, как это, это реплицируется из руководства здесь.
SUBDIRS = foo bar baz .PHONY: subdirs $(SUBDIRS) subdirs: $(SUBDIRS) $(SUBDIRS): $(MAKE) -j 8 -C $@ foo: baz
вы можете перейти /usr/bin/make
to /usr/bin/make_orig
и сделать /usr/bin/make
этот скрипт:
#!/bin/sh
/usr/bin/make_orig -j 8 $@
обязательно запустите chmod +x /usr/bin/make
.
попробуйте этот метод, если более простой метод в мой другой ответ не работает. Этот метод не так безопасен, и немного Клудж.