我可以使用-j
参数为构建过程设置线程数。例如,我有4个核心+4虚拟。当我写道:make -j8
时,速度会提高4倍。
是否可以将该值设置为默认值? (例如,在Linux Gentoo中,在配置文件中,可以设置此默认值。)
P.S。我有Arch Linux
答案 0 :(得分:37)
您的问题不是关于线程,而是关于make执行的进程(作业)。
设置此方法的简单方法是,从控制台使用make时添加:
alias make="/usr/bin/make -j 8"
到您的.profile
文件。
您也可以使用setenv MAKEFLAGS '-j 8'
,但MAKEFLAGS
可以在某些情况下忽略此参数,因为保留所需数量的进程需要与递归make
调用进行通信。令人高兴的是这种方法works with current versions of GNU Make。
答案 1 :(得分:30)
setenv MAKEFLAGS '-j8'
希望这有帮助!
答案 2 :(得分:9)
以下是我的表现:
CORES ?= $(shell sysctl -n hw.ncpu || echo 1)
all:; @$(MAKE) _all -j$(CORES)
_all: install lint test
.PHONY: all _all
…
我基本上已经"别名"我的默认目标all
为"私人" _all
。确定核心数量的命令是特定于OSX的AFAIK,因此如果愿意的话,您可以将其改进为更多跨平台。由于?=
赋值,我们可以在需要时使用和覆盖变量来覆盖它。
修改强>
您也可以从makefile本身附加到MAKEFLAGS
,如下所示:
CPUS ?= $(shell sysctl -n hw.ncpu || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
…