考虑一个大多数平坦的依赖树,其中1个目标直接依赖于100个叶子。每片叶子彼此独立。你有一个8核的机器来通过叶子队列,并将使用-j
选项调用Make。
这些叶子中的99个每个需要10秒才能执行。但是,其中一个叶子(称为目标X
)是特殊的,因为它需要2分钟才能执行。由于所有100个叶子在拓扑排序中处于等效的“位置”,因此可能它们将被执行的顺序是不确定的。但是,如果X
最终成为队列中处理的最后一个叶子(总共约4分钟),那么它将对整个构建时间产生显着影响,而不是队列中的第一个叶子(整个约2分钟) )。
我们希望在其他叶节点的执行中“隐藏”整个X
的构建时间。
有没有办法强制X
成为Make队列中的“第一个等于”?
答案 0 :(得分:1)
即使在并行构建模式下,仍然按照与串行构建时相同的顺序遍历先决条件列表。它可以同时调用多个作业。
因此,将您的“慢”目标放在先决条件列表中的第一个将导致它首先启动,即使使用-j
。