我是“makei -j”的忠实粉丝,但我正在寻找这种情况下的解决方案。我想要组的并行作业(例如不同的 make 目标),但是(如果一个组别名为许多子目标)它应该在组内按顺序进行。
(类似的主题在未保存在多线程 makefile 中的“仅限订单”先决条件的顺序中进行了讨论,但它不起作用)。
让我们以下面的简化示例为例。
== Makefile ==
t0:
echo t0_start `date`
sleep 5
echo t0_end `date`
t1:
echo t1_start `date`
sleep 5
echo t1_end `date`
t2:
echo t2_start `date`
sleep 5
echo t3_end `date`
# The above were delivered from another team
grp_t0 : t0
grp_t1_t2: t1 t2
all: grp_t0 | grp_t1_t2
==
grp_t0 and grp_t1_t2 are defined by the consumer team. How do I now run grp_t0 and grp_t1_t2 in parallel but sequential inside grp_t1_t2.
上面的代码生成了
==
t0_start Sun Apr 7 08:31:59 PDT 2024
t2_start Sun Apr 7 08:31:59 PDT 2024
t1_start Sun Apr 7 08:31:59 PDT 2024
t0_end Sun Apr 7 08:32:04 PDT 2024
t3_end Sun Apr 7 08:32:04 PDT 2024
t1_end Sun Apr 7 08:32:04 PDT 2024
==
期望并行启动 {t0,t1},然后启动 t2
.NOTPARALLEL
:
.NOTPARALLEL: all
all: grp_t0 grp_t1_t2
或.WAIT
:
all: grp_t0 .WAIT grp_t1_t2