web-dev-qa-db-ja.com

並列make:デフォルトのオプションとして-j8を設定します

-j引数を使用して、ビルドプロセスのスレッド数を設定できます。たとえば、4つのコアと4つの仮想があります。私が書くとき:make -j8速度は4倍に増加します。

その値をデフォルトとして設定することは可能ですか? (たとえば、Linux Gentooの構成ファイルでは、このデフォルト値を設定できます)。

pS Arch Linuxを持っています

37
Max Frai

あなたの質問はスレッドではなく、makeによって実行されるプロセス(ジョブ)に関するものです。

これを設定する簡単な方法は、コンソールからmakeを使用するときに追加します。

alias make="/usr/bin/make -j 8"

.profileファイルに。

setenv MAKEFLAGS '-j 8'を使用することもできますが、MAKEFLAGSは、必要な数のプロセスを維持するために再帰的なmake呼び出しと通信する必要があるため、一部のシナリオではこのパラメーターを無視できます。幸いにもこの方法 GNU Make の現在のバージョンで動作します。

37
Rafał Rawicki
setenv MAKEFLAGS '-j8'

お役に立てれば!

32
Matt Melton

ここに私がそれをした方法があります:

CORES ?= $(Shell sysctl -n hw.ncpu || echo 1)

all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…

基本的に、デフォルトのターゲットallを「プライベート」_allに「エイリアス」しました。コアの数を計算するコマンドはOSX固有であり、AFAIKなので、可能であれば、クロスプラットフォームになるように改善することができます。また、?=割り当てがあるため、必要に応じてenv変数でオーバーライドできます。

編集:

次のように、メイクファイル自体からMAKEFLAGSに追加することもできます。

CPUS ?= $(Shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…
14
gtramontina