如何使用带有NOTPARALLEL标签的makefile?

我在Makefile中有5个标签:

all: label1 label2 label3 label4 last_label 

我想last_label最后完成,我想使用make -j 。 如果我使用.NOTPARALLEL ,它会使所有的NOTPARALLEL ,有关如何做的build议?

Solutions Collecting From Web of "如何使用带有NOTPARALLEL标签的makefile?"

创建一个目标,指定可以并行执行的四个目标,并在all目标中包含this和last_label

 intermediate: label1 label2 label3 label4 all: $(MAKE) intermediate $(MAKE) last_label 

这将执行在intermediate并行指定的目标,但intermediatelast_label将被强制连续。

(请注意, $(MAKE)之前的前导空格是一个TAB字符。)

如果last_label最后需要运行的原因是它需要来自其他标签的数据,最好的方法是告诉make这个依赖关系:

 all: last_label last_label: label1 label2 label3 label4 

如果没有真正的依赖关系(也就是说,如果其中一个更改,你不希望重建last_label ),并且如果你使用的是GNU Make,你可以指定它们作为“仅依赖”的依赖项。在last_label之前确定它们是存在的:

 all: last_label last_label: | label1 label2 label3 label4