我有以下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
我希望子目标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
的所有子目标都会按顺序执行,但它们的子目标可以并行完成。
答案 0 :(得分:2)
说all : | a b
表示a
和b
都必须在all
之前完成,但您对a
和b
一无所知与彼此的关系。
如果您想在a
之前运行b
,那么您必须声明:
b: a