我想根據是否在生成文件上運行make dev
或make prod
來運行不同版本的乾淨目標。如何根據目標變量(Makefile)有條件地調用目標?
我沒有任何編譯本身,只是要有條件地基於可變特定目標或設定的目標,例如:
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
@MadScientist - 這僅僅是一個例子 - 不要陷入特定的乾淨命令,我只寫這個來證明我試圖用目標做什麼。在這種情況下,我只想運行乾淨的目標,如果BUILD_ENV變量設置爲開發,或者只是乾淨的信息,否則。 (我只是想根據變量的值調用一組特定的目標)。 – qodeninja