1

下面我附上一个简单的依赖列表作为例子。我正在使用 Unix tsort 通过对节点进行编号来解决相同的问题

在此处输入图像描述

Root 0
File1 1
File2 2
File1.cpp 3
File2.cpp 4

> tsort 
 0 1
 0 2
 1 3
 2 4

 Generates:
 0 2 1 3 4 

我无法理解的是如何有效地使用这个依赖列表以便只重新编译更改的文件?我只是想了解如何在内部工作并尝试构建我自己的小原型。欢迎使用除拓扑排序之外的任何其他方法。

4

1 回答 1

0

实际上,make 可能不再真正使用拓扑排序:以这种方式天真地生成工作项的线性列表并不适合并行性。

我不知道 make 实际上做了什么,但想法是首先修剪依赖树(删除依赖关系未更改的叶子,这可能会创建新叶子,因此重复直到不再删除任何内容),然后执行并行深度 -第一次访问构建每个节点。

于 2013-07-26T15:38:14.710 回答