Решение для предварительной и последующей обработки в make-файлах с использованием правил MAKECMDGOALS и двойных двоеточий.
MAKECMDGOALS - цели, указанные в командной строке.
Первый шаг - получить первые и последние цели из командной строки,
или если в списке нет целей, используйте цель по умолчанию.
ifneq ($(MAKECMDGOALS),)
FIRST_GOAL := $(word 1, $(MAKECMDGOALS))
LAST_GOAL := $(word $(words $(MAKECMDGOALS)), $(MAKECMDGOALS))
else
FIRST_GOAL := all
LAST_GOAL := all
endif
Правила двойного двоеточия позволяют выполнять несколько рецептов для одной и той же цели по порядку. Вам придется изменить все цели командной строки на правила двойного двоеточия.
#Dummy rule to set the default
.PHONY: all
all ::
#Preprocessing
$(FIRST_GOAL) ::
echo "Starting make..."
all :: normal_prerequistes
normal_recipe
other_stuff
#Postprocessing
$(LAST_GOAL) ::
echo "All done..."