我希望根据是否在makefile中运行make dev
或make prod
来运行不同版本的清理目标。
我并没有编译任何东西,只是想根据一个变量有条件地调用特定的目标或一组目标,例如:
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
有没有一种方法可以使用Makefile来实现这个?我还没有找到任何关于这种用例的示例。
我不是要特定地清理什么或构建什么,这只是我试图有条件地调用一组目标的示例。实际目标可以是任何其他内容。
make dev
或make prod
时运行适当的“clean”目标吗?但这样做不就只是清理你刚刚创建的东西吗?或者,你是想说当你运行make clean
时,你想运行基于你上次运行的版本的目标,无论是make dev
还是make prod
? - MadScientist