Можно ли заставить GNU Make более точно определить, какие зависимости на самом деле отсутствуют? - PullRequest
0 голосов
/ 18 декабря 2018

Я использую 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 вывести более подробный отчет о том, чего на самом деле не хватает, чтобы удовлетворить зависимости на более низком уровне?

...