在 Makefile 中模仿“make -j”

在 Makefile 中模仿“make -j”

shell 命令make -j并行运行 Makefile 的命令,这在现代多核 CPU 上非常有用。这种并行性可以从之内Makefile?

来自手动的对于 Gnu make,我最好的猜测是使用主 Makefile 仅作为包装器,然后将其传递-j给执行实际工作的子 make。但也许有一些环境变量或点文件或内部变量或其他无法搜索的内容史努比咒骂方法来做到这一点。

限制工作数量是可以的,例如-j $$(nproc)......

可能是 Linux,但不一定。

(向 ~/.bashrc 添加类似内容alias make='make -j'太危险了;是否并行化的决定应该由 Makefile 来决定,而不是由用户来决定。)

答案1

您可以从 makefile 本身中附加到 MAKEFLAGS,例如:

MAKEFLAGS += --jobs=$(CPUS)

其中 CPUS 在 makefile 中定义。

相关内容