并行执行进程,等待并执行其他进程



我使用以下代码并行执行目标。现在我想要的是它将并行工作,但最后需要执行一些目标,例如wait3 个并行运行的进程以完成然后执行另外 2 个进程。我该怎么做?

例如,这里是packcleanupmodule1之后运行module2将并行运行

NPROCS = $(shell sysctl hw.ncpu  | grep -o '[0-9]+')
MAKEFLAGS += -j$(NPROCS)
all: module1 module2
.PHONY: module1
module1:
@echo "run module 1"
DIR=$(PWD)
@echo $(DIR)
.PHONY: module2
module2:
@echo "run module2”
.PHONY:
pack:
pack $(DIR)
cleanup: 
gbt clean $(DIR)

这就是先决条件,make的一大优势。

改变:

pack:

pack: module1 module2

这告诉makepack目标有两个先决条件;module1module2.

这意味着makemodule1module2完成运行之前不会运行pack。它们是否并行运行不会有什么不同。


如果你有很多先决条件,你可以把它们放在一个宏中,例如:

modules = module1 module2 …
pack: $(modules)

最新更新