У меня есть гигантский проект, который построен с использованием make-файлов. Запуск make в корневом каталоге проекта занимает более 20 минут, если файлы не были изменены (то есть, просто просматривая проект и проверяя наличие обновленных файлов).
Я хотел бы создать карту зависимостей, которая скажет мне, какие каталоги мне нужно запустить 'make' на основе измененных файлов. У меня уже есть список обновленных файлов, которые я могу получить из своей системы контроля версий, и я хотел бы пропустить 20 минут обхода и перейти прямо к местам, которые нужно перекомпилировать.
Проект состоит из нескольких языков и пользовательских инструментов, поэтому в идеале он не должен зависеть от языка (т. Е. Он будет обрабатывать все make-файлы только для генерации зависимостей). Я также остановлюсь на C / C ++-специфическом решении, так как большая часть проекта находится на C ++. Проект построен на Linux.
[Редактировать - уточнения, ответы на комментарии]
Проект действительно гигантский, он занимает 20 минут просто из-за размера и из-за всех вещей, описанных в ссылке ниже («рекурсивное использование считает вредным»). К сожалению, проект составлен из множества частей, пришедших из разных мест, и у меня мало гибкости в том, что я могу сделать с низкоуровневыми файлами Makefile ... верхние уровни, соединяющие части, - это те, которые я контролирую.