我在Makefile中有5个标签:
all: label1 label2 label3 label4 last_label
我想last_label
最后完成,我想使用make -j
。 如果我使用.NOTPARALLEL
,它会使所有的NOTPARALLEL
,有关如何做的build议?
创建一个目标,指定可以并行执行的四个目标,并在all
目标中包含this和last_label
:
intermediate: label1 label2 label3 label4 all: $(MAKE) intermediate $(MAKE) last_label
这将执行在intermediate
并行指定的目标,但intermediate
和last_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