Parallel processing Makefile:在转到下一个子目标之前,执行子目标中的所有语句
我有以下生成文件:Parallel processing Makefile:在转到下一个子目标之前,执行子目标中的所有语句,parallel-processing,makefile,Parallel Processing,Makefile,我有以下生成文件: b: sleep 2 && echo b1 sleep 2 && echo b2 sleep 2 && echo b3 a: sleep 2 && echo a1 sleep 2 && echo a2 sleep 2 && echo a3 all: | a b sleep 2 && echo all 我希
b:
sleep 2 && echo b1
sleep 2 && echo b2
sleep 2 && echo b3
a:
sleep 2 && echo a1
sleep 2 && echo a2
sleep 2 && echo a3
all: | a b
sleep 2 && echo all
我希望子目标a和b在并行构建中顺序执行,并在它们之前添加
。而不是像这样
sleep 2 && echo a1
a1
sleep 2 && echo a2
a2
sleep 2 && echo a3
a3
sleep 2 && echo b1
b1
sleep 2 && echo b2
b2
sleep 2 && echo b3
b3
sleep 2 && echo all
all
调用makeall-j3
后,我得到
sleep 2 && echo a1
sleep 2 && echo b1
a1
b1
sleep 2 && echo a2
sleep 2 && echo b2
a2
b2
sleep 2 && echo a3
sleep 2 && echo b3
b3
a3
sleep 2 && echo all
all
是否有一种方法可以强制执行我所期望的行为,而无需将所有命令放在每个单独的脚本中?我的意思是,
all
的所有子目标都将按顺序执行,但它们的子目标可以并行执行。说all:| ab
意味着a
和b
必须在all
之前完成,但你没有提到a
和b
之间的关系
如果要在b
之前运行a
,则必须声明:
b: a
因此,如果我想要一个目标
重建
,它将首先执行目标清理
,然后执行全部
,但不使全部
依赖于清理
,有没有办法做到这一点?@InnotKauker重建:清理$(MAKE)所有的
都应该工作(通过递归调用)。Etan是正确的。递归是实现这一点的唯一方法。