Я использую GNU-Make (v4 +) для создания очень сложных проектов.Дерево зависимостей для любой заданной цели может иметь глубину 5-10 уровней, и большинство из этих уровней содержат множество правил сопоставления с образцом.Я начинаю раздражаться при отладке этого, потому что кажется, что отчеты об ошибках дают мне только наименее полезную информацию, когда чего-то не хватает.
Например, рассмотрим пару уровней зависимостей:
.PHONY: out
out: thing_a thing_b
thing_%: %
cat $< > $@
a:
touch $@
clean:
rm -f thing_a thing_b a b
Обратите внимание, что make out
не удастся, потому что нет файла b
и нет способа автоматически сделать это.Если вы touch b
это будет работать.Это делает b
конечным виновником, которого не хватает, но это не то, что будет сказано в сообщении об ошибке:
make: *** Нет правила для создания цели 'thing_b', необходимой для 'out',Стоп.
Это бесполезно, потому что есть целевое правило для thing_b
, это просто шаблонное правило, которое само по себе отсутствует зависимость.
Есть лиесть ли способ заставить make вывести более подробный отчет о том, чего на самом деле не хватает, чтобы удовлетворить зависимости на более низком уровне?