Make-файлы имеют тенденцию становиться действительно быстрыми, особенно при работе с несколькими каталогами. Многие из Makefile, с которыми я сталкивался в своей профессиональной жизни, где чуть больше прославляли сценарии оболочки, а часть зависимостей в основном отсутствовала. Такого рода проблемы были отмечены оригинальной статьей рекурсивная марка, считающаяся вредной .
Там и в следующей статье Реализация нерекурсивного make - вы можете найти подходящий шаблон.
Также здесь и здесь на SO вы можете найти людей, ищущих призрачный шаблон Makefile (ов).
Как правило, хороший Makefile, который я видел, был результатом работы эксперта, который работал в течение нескольких месяцев и создал инфраструктуру, которая превратила синтаксис Makefile в нечто почти совершенно другое. Разработчикам просто нужно было назначить специальные переменные, включить магический код и собрать.
Следующим шагом в этой эволюции является более современный инструмент, такой как CMake . CMake будет генерировать хорошо сформированные Makefiles для вас. Если у вас есть контроль над этим, рассмотрите такой инструмент.
ИМХО, вы найдете, что это имеет гораздо больше смысла, и сделает вас намного более продуктивным, добавит кросс-платформенную ценность и поддержит весь процесс сборки (включая настройку, упаковку, непрерывную интеграцию и т. Д.)