我在Makefile中有5个标签:
all: label1 label2 label3 label4 last_label
我希望最后完成last_label
,我想使用make -j
。如果我使用.NOTPARALLEL
,它会使所有人NOTPARALLEL
,关于如何做到这一点的任何建议?
答案 0 :(得分:12)
如果last_label
需要最后运行的原因是它需要来自其他标签的数据,最好的方法是告诉make
该依赖关系:
all: last_label
last_label: label1 label2 label3 label4
如果不存在真正的依赖关系(即,如果您不希望重建last_label
,如果其中一个更改),并且您使用的是GNU Make,则可以将这些指定为“order - 只有“依赖 - make
只会确保它们在构建last_label
之前存在:
all: last_label
last_label: | label1 label2 label3 label4
答案 1 :(得分:5)
创建一个目标,指定可以并行执行的四个目标。在last_label
目标中包含此all
:
intermediate: label1 label2 label3 label4
all:
$(MAKE) intermediate
$(MAKE) last_label
这将并行执行intermediate
中指定的目标,但intermediate
和last_label
将被连续强制执行。
(请注意,$(MAKE)
之前的前导空格是TAB
个字符。)