Makefile:在进入下一个子目标之前执行子目标中的所有语句
Makefile: execute all statements in a subtarget before going to the next subtarget
我有以下生成文件:
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
调用 make all -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 : | a b
意味着 a
和 b
都必须在 all
之前完成,但是你没有说 a
和 b
] 相对于 彼此。
如果你想在b
之前运行a
,那么你必须声明:
b: a
我有以下生成文件:
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
调用 make all -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 : | a b
意味着 a
和 b
都必须在 all
之前完成,但是你没有说 a
和 b
] 相对于 彼此。
如果你想在b
之前运行a
,那么你必须声明:
b: a