Как использовать результат топологической сортировки для разрешения зависимостей для генерации конечного объектного кода?

Ниже я прилагаю простой список зависимостей в качестве примера. Я использую 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

Что я не могу понять, так это как эффективно использовать этот список зависимостей, чтобы перекомпилировать только измененные файлы?
Я просто пытаюсь понять, как это работает внутри, и пытаюсь создать свой собственный маленький прототип для того же самого.
Любой другой подход, кроме топологической сортировки, приветствуется.

1

Решение

На самом деле, make, вероятно, больше не использует топологический порядок: наивный вывод линейного списка рабочих элементов таким способом не поддается параллелизму.

Я не знаю, что на самом деле делает make, но идея состоит в том, чтобы сначала удалить дерево зависимостей (удалить листья, чьи зависимости не изменились, что может создать новые листья, поэтому повторяйте, пока больше ничего не будет удалено), а затем выполните параллельную глубину. первое посещение, чтобы построить каждый узел.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]