如何在Makefile中指定要运行的默认作业数?

问题描述 投票:0回答:1

考虑以下设计的Makefile:

.PHONY: all one two
SLEEP = 2

all: one two

one two:
    @sleep $(SLEEP)
    @echo $@

使用make -j 2 all运行它可以在运行其中任何一个时完成两个任务,因为它们都是并行运行的。如果你控制make的调用并记住每次都这样做,那么这很有效,但是如果你控制的只是Makefile,那就不行了。

设置MAKEFLAGS环境变量也可以控制:

$ export MAKEFLAGS="-j 2"
$ make all

但是,在Makefile中设置此值似乎不起作用:

MAKEFLAGS = -j 2

失败。

export MAKEFLAGS="-j 2"

失败。

同样设置JOBS似乎没有任何效果。有没有办法控制从Makefile内部运行的默认作业数?

注意我知道我可以使用一个虚拟配方并从里面调用一个递归make,但这会引入一大堆混乱,因为我需要为一大堆可能的目标设置它,而我是处理包含的Makefiles,它们不一定与递归相配。

makefile gnu-make jobs
1个回答
0
投票

在我的Makefile开头设置MAKEFLAGS := -j 2(注意冒号)。

© www.soinside.com 2019 - 2024. All rights reserved.