В рецепте fresh
вы можете вызвать make
дважды рекурсивно для одного и того же файла Makefile для цели, которая создает каталог, и цели all
соответственно:
# At the very beginning of the makefile
CURRENT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
# ...
.PHONY: all clean fresh
directory := OutputDirectory
all: $(objects)
fresh: clean
$(MAKE) -f $(CURRENT_MAKEFILE) $(directory)
$(MAKE) -f $(CURRENT_MAKEFILE) all
$(directory): ;mkdir -p $@
clean: ;rm -f $(objects); rm -rf $(directory)
Таким образом, цели all
предшествует цель $(directory)
, которой в свою очередь предшествует clean
.