5

我在 Makefile 中有 5 个标签:

all: label1 label2 label3 label4 last_label

我想last_label最后完成,我想使用make -j. 如果我使用.NOTPARALLEL,它将使所有这些NOTPARALLEL,关于如何做到这一点的任何建议?

4

2 回答 2

15

如果last_label需要最后运行的原因是它需要来自其他标签的数据,那么最好的方法是说明make该依赖关系:

all: last_label

last_label: label1 label2 label3 label4

如果没有真正的依赖项(即,如果您不想last_label在其他一项更改时重新构建),并且如果您使用的是 GNU Make,则可以将它们指定为“仅订购”依赖项——make将只是确保它们在last_label构建之前存在:

all: last_label

last_label: | label1 label2 label3 label4
于 2013-05-30T13:15:24.037 回答
9

创建一个目标,指定可以并行执行的四个目标并将其包含last_labelall目标中:

intermediate: label1 label2 label3 label4

all:
        $(MAKE) intermediate
        $(MAKE) last_label

intermediate这将并行执行其中指定的目标intermediate,但last_label会连续强制执行。

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

于 2013-05-30T08:35:18.980 回答