I want a different version of the clean target to run based on whether make dev or make prod are run on a makefile.
I'm not compiling anything per se, just want to conditionally call a particular target or set of targets based on a variable, for example:
ifeq ($(BUILD_ENV),"development")
clean: -clean
else
clean: -clean-info
endif
#---------------------------------
dev: BUILD_ENV = development
dev: dev-setup which-env
#---------------------------------
prod: BUILD_ENV = production
prod: prod-setup which-env
#---------------------------------
which-env: clean
@echo -e "$(GREEN)$(BUILD_ENV)!$(CLEAR)"
-clean: -clean-info -clean-logs | silent
@echo -e "$(GREEN)</CLEAN>$(CLEAR)"
-clean-info:
@echo -e "$(GREEN)<CLEAN>...$(CLEAR)"
-clean-logs:
@echo -e " $(GREY)Removing log and status files $(CLEAR)";
@if [ -d .stat ]; then rm -rf .stat; fi
@rm -f *.log || true
Is there a way to do this with Makefiles? I havent found anything yet that illustrates this use-case.
I'm not trying to specifically clean anything or build anything this is just an example of me trying to conditionally call a set of targets. The actual targets could be anything else.
cleantarget when you runmake devormake prod? But wouldn't that just clean up the things you just got through creating? Or, are you trying to say that when you runmake cleanyou want to run the version of the target based on whichever you ran last, eithermake devormake prod? - MadScientist