【发布时间】:2013-09-30 22:52:08
【问题描述】:
我希望根据 make dev 或 make prod 是否在 makefile 上运行来运行不同版本的 clean 目标。
我本身并没有编译任何东西,只是想根据一个变量有条件地调用一个特定的目标或一组目标,例如:
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
有没有办法用 Makefiles 做到这一点?我还没有找到任何可以说明这个用例的东西。
我并不是要专门清理任何东西或构建任何东西,这只是我尝试有条件地调用一组目标的一个例子。实际目标可以是其他任何东西。
【问题讨论】:
-
我不太明白你想要什么。您想在运行
make dev或make prod时运行适当的clean目标吗?但这不只是清理你刚刚通过创造得到的东西吗?或者,你是想说当你运行make clean时,你想根据你最后运行的那个来运行目标的版本,make dev或make prod? -
@MadScientist -- 这只是一个例子 -- 不要陷入特定的干净命令,我写这个只是为了演示我试图对目标做什么。在这种情况下,我只想在 BUILD_ENV 变量设置为 development 时运行 clean 目标,否则只运行 clean_info。 (我只是想要一种方法来根据变量的值调用一组特定的目标。)
标签: makefile conditional target