Сделать" make "по умолчанию" make-J 8"

есть ли способ, что я могу сделать

$ make

по умолчанию:

$ make -j 8

?

7 ответов


alias make="make -j 8", предполагая bash shell


установите переменную среды 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.

попробуйте этот метод, если более простой метод в мой другой ответ не работает. Этот метод не так безопасен, и немного Клудж.