Сделать "make" по умолчанию "make -j 8" - PullRequest
12 голосов
/ 28 января 2010

Есть ли способ, которым я могу сделать

$ make

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

$ make -j 8

Ответы [ 8 ]

59 голосов
/ 28 января 2010

Установите для переменной среды MAKEFLAGS значение -j 8. Если вы используете csh или tcsh, вы можете сделать это с помощью setenv MAKEFLAGS '-j 8'. Если вы используете bash, вы можете сделать это с помощью export MAKEFLAGS='-j 8'. Возможно, вы захотите поместить эту команду в файл запуска вашей оболочки, такой как .cshrc или .bashrc (в вашем домашнем каталоге).

Внимание: установка значения по умолчанию будет применяться ко всем вызовам make, в том числе когда вы «создаете» проект, отличный от вашего, или запускаете скрипт, который вызывает make. Если проект не был хорошо спроектирован, у него могут быть проблемы, когда он построен с несколькими заданиями, выполняющимися параллельно.

11 голосов
/ 28 января 2010

alias make="make -j 8", при условии, что оболочка bash

10 голосов
/ 28 января 2010

Ответы, предлагающие alias make='make -j 8', являются хорошими ответами на ваш вопрос.

Тем не менее, я бы рекомендовал не делать этого!

Во что бы то ни стало, используйте псевдоним для сохранения ввода - но вызовитеэто что-то отличное от make.

Это может быть нормально для любого проекта, над которым вы сейчас работаете;но вполне возможно написать make-файлы с отсутствующими зависимостями, которые не совсем корректно работают с -j, и если вы столкнетесь с такой вещью, вам будет интересно, почему сборка не удалась таинственным образом для вас, но отлично работает для другихлюди.

(Тем не менее, если вы делаете псевдоним make, вы можете заставить bash игнорировать псевдоним, набрав \make.)

5 голосов
/ 28 января 2010

Если вы используете командную строку, вы можете сделать:

alias make='make -j 8'

Это будет временно, чтобы сделать его постоянным, вам нужно добавить его в .bashrc

Читайте здесь: http://www.linfo.org/make_alias_permanent.html

3 голосов
/ 07 марта 2017

Добавить

MAKEOPTS='-j8'
MAKEFLAGS='-j8'

до /etc/make.conf (создайте его, если он еще не существует).

Если это не сработает, добавьте

export MAKEOPTS='-j8'
export MAKEFLAGS='-j8'

к вашему общесистемному профилю (например, /etc/profile).

Для меня MAKEOPTS один не работал. Возможно, MAKEFLAGS - это все, что нужно.

0 голосов
/ 10 декабря 2018

Если вы используете 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).

0 голосов
/ 09 февраля 2017

Вы можете переместить /usr/bin/make в /usr/bin/make_orig и сделать /usr/bin/make этот скрипт:

#!/bin/sh

/usr/bin/make_orig -j 8 $@

Обязательно запустите chmod +x /usr/bin/make.

Попробуйте этот метод, если более простой метод в моем другом ответе не работает. Этот метод не так безопасен и является чем-то вроде клочья.

0 голосов
/ 28 января 2010

Почему бы не создать внешний make-файл, который вызывает другой make-файл, подобный этому, это скопировано из руководства здесь .

     SUBDIRS = foo bar baz
     .PHONY: subdirs $(SUBDIRS)
     subdirs: $(SUBDIRS)
     $(SUBDIRS):
             $(MAKE) -j 8 -C $@

     foo: baz
...