并行生成:将 -j8 设置为默认选项



我可以使用-j参数为构建过程设置线程数。例如,我有 4 个内核 +4 个虚拟内核。当我写:make -j8速度增加了 4 倍。

是否可以将该值设置为默认值?(例如,在Linux Gentoo的配置文件中,可以设置这个默认值)。

附言我有 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,如下所示:

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)

相关内容

  • 没有找到相关文章

最新更新