В соответствии с рекурсивной маркой Миллера, считающейся вредной , вам следует избегать вызова $(MAKE)
! В случае, если вы показываете, это безвредно, потому что на самом деле это не make-файл, а просто скрипт-обертка, который с таким же успехом мог бы быть написан в Shell. Но вы говорите, что продолжаете в том же духе на более глубоких уровнях рекурсии, так что вы, вероятно, столкнулись с проблемами, показанными в этом откровенном эссе.
Конечно, с GNU сделать это громоздким, чтобы избежать. И хотя они знают об этой проблеме, это их документированный способ действий.
OTOH, makepp был создан как решение этой проблемы. Вы можете писать свои make-файлы на уровне каталогов, но все они объединяются в полный обзор вашего проекта.
Но устаревшие make-файлы пишутся рекурсивно. Таким образом, существует обходной путь, когда $(MAKE)
ничего не делает, кроме как направляет подзапросы обратно в основной процесс makepp. Только если вы делаете избыточные или, что еще хуже, противоречивые вещи между вашими субмейками, вы должны запросить --traditional-recursive-make
(что, конечно, нарушает это преимущество makepp). Я не знаю других ваших make-файлов, но если они написаны правильно, с makepp необходимые перестройки должны происходить автоматически, без необходимости каких-либо хаков, предложенных здесь другими.