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

Есть ли способ сделать

$ make

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

$ make -j 8

?

Ответ 1

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

Ответ 2

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

Предостережение: установка такого значения по умолчанию будет применяться ко всем вызовам make, в том числе, когда вы "создаете" проект, отличный от вашего, или запускаете script, который вызывает make. Если проект не был хорошо спроектирован, у него могут возникнуть проблемы, если он построен с параллельным выполнением нескольких заданий.

Ответ 3

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

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

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

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

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

Ответ 4

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

alias make='make -j 8'

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

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

Ответ 5

Добавить

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

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

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

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

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

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

Ответ 6

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

     SUBDIRS = foo bar baz
     .PHONY: subdirs $(SUBDIRS)
     subdirs: $(SUBDIRS)
     $(SUBDIRS):
             $(MAKE) -j 8 -C [email protected]

     foo: baz

Ответ 7

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

Ответ 8

Вы можете переместить /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.

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