-j
引数を使用して、ビルド プロセスのスレッド数を設定できます。たとえば、私は 4 コア + 4 仮想を持っています。書くと:make -j8
速度が4倍になります。
その値をデフォルトとして設定することは可能ですか? (たとえば、Linux Gentoo では、構成ファイルで、このデフォルト値を設定できます)。
ps私はArch Linuxを持っています
-j
引数を使用して、ビルド プロセスのスレッド数を設定できます。たとえば、私は 4 コア + 4 仮想を持っています。書くと:make -j8
速度が4倍になります。
その値をデフォルトとして設定することは可能ですか? (たとえば、Linux Gentoo では、構成ファイルで、このデフォルト値を設定できます)。
ps私はArch Linuxを持っています
あなたの質問はスレッドに関するものではなく、make によって実行されるプロセス (ジョブ) に関するものです。
コンソールから make を使用する場合、これを設定する簡単な方法は次のとおりです。
alias make="/usr/bin/make -j 8"
あなたの.profile
ファイルに。
も使用できますがsetenv MAKEFLAGS '-j 8'
、MAKEFLAGS
必要な数のプロセスを維持するには再帰make
呼び出しと通信する必要があるため、一部のシナリオではこのパラメーターを無視できます。幸いなことに、この方法は現在のバージョンの GNU Make で動作します。
setenv MAKEFLAGS '-j8'
お役に立てれば!
これが私がやった方法です:
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
次のように、makefile 自体の中で from に追加することもできます。
CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…
編集2:
よりクロスプラットフォームにしたい場合は、次を使用することもできます。
CPUS ?= $(shell (nproc --all || sysctl -n hw.ncpu) 2>/dev/null || echo 1)