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 

私が理解できないのは、変更されたファイルのみを再コンパイルするために、この依存関係リストを効率的に使用する方法です。make が内部的にどのように機能するかを理解しようとしており、同じための独自の小さなプロトタイプを作成しようとしています。トポロジーソート以外のアプローチは歓迎されます。

4

1 に答える 1

0

実際、make はトポロジー順序付けを実際にはもう使用していない可能性があります。この方法で単純に作業項目の線形リストを生成しても、並列処理には適していません。

make が実際に何をするのかはわかりませんが、最初に依存関係ツリーを刈り込み (依存関係が変更されていない葉を削除すると、新しい葉が作成される可能性があるため、何も削除されなくなるまで繰り返します)、次に並列の深さを実行するという考え方です。各ノードを構築するための最初の訪問。

于 2013-07-26T15:38:14.710 に答える