Я использую gmake и gcc -MM
для отслеживания зависимостей заголовков, следуя руководству. Механизм опирается на директиву makefile include
для импорта вычисленных зависимостей.
Поскольку файлы .d
включены в make файл, они должны существовать для любой цели, которая будет создана, включая clean
. Таким образом, перед тем, как clean
может делать правильные вещи, необходимо создать зависимости, а если не удается построить, то clean
просто больше беспорядок.
Помимо clean
, он хочет сделать все зависимости до построения любой цели.
Кроме того, если какой-либо файл будет изменен, чтобы включить несуществующий файл, тогда разрешение зависимости ломается и ничего не будет построено.
Если заголовок удаляется, тогда существующие файлы зависимостей содержат неподвижное имя в качестве цели, и ничего не будет создано до тех пор, пока не будут удалены файлы зависимых зависимостей... что невозможно сделать с помощью clean
.
Замена шаблона подстановки include
подстановочным знаком для включения всех существующих файлов зависимостей решает некоторые проблемы, но он по-прежнему не может очистить поврежденную зависимость, а устаревшие файлы зависимостей никогда не удаляются. Есть ли лучшее решение? Действительно ли ручной пример предназначен для реального использования?