原因在许多独立的“兄弟”目标中首先建立一个特定的目标

时间:2015-08-05 06:40:49

标签: build makefile

考虑一个大多数平坦的依赖树,其中1个目标直接依赖于100个叶子。每片叶子彼此独立。你有一个8核的机器来通过叶子队列,并将使用-j选项调用Make。

这些叶子中的99个每个需要10秒才能执行。但是,其中一个叶子(称为目标X)是特殊的,因为它需要2分钟才能执行。由于所有100个叶子在拓扑排序中处于等效的“位置”,因此可能它们将被执行的顺序是不确定的。但是,如果X最终成为队列中处理的最后一个叶子(总共约4分钟),那么它将对整个构建时间产生显着影响,而不是队列中的第一个叶子(整个约2分钟) )。

我们希望在其他叶节点的执行中“隐藏”整个X的构建时间。

有没有办法强制X成为Make队列中的“第一个等于”?

1 个答案:

答案 0 :(得分:1)

即使在并行构建模式下,仍然按照与串行构建时相同的顺序遍历先决条件列表。它可以同时调用多个作业。

因此,将您的“慢”目标放在先决条件列表中的第一个将导致它首先启动,即使使用-j