Я хочу, чтобы другая версия чистой цели запускалась в зависимости от того, запущены ли в файле make 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
Есть ли способ сделать это с Makefiles? Я еще ничего не нашел, что иллюстрирует этот вариант использования.
Я не пытаюсь конкретно чистить что-либо или что-либо строить, это всего лишь пример того, что я пытаюсь условно назвать набор целей. Фактические цели могут быть чем угодно.
Я не совсем понимаю, чего вы хотите. Вы хотите запустить соответствующую «чистую» цель при запуске 'make dev' или' make prod'? Но разве это не просто очистит то, что вы только что создали? Или вы пытаетесь сказать, что при запуске 'make clean' вы хотите запустить версию цели на основе того, что вы написали последним, либо« make dev », либо« make prod »? – MadScientist
@MadScientist - это просто пример - не добирайтесь до особых команд, я только написал это, чтобы продемонстрировать, что я пытаюсь сделать с целями. В этом случае я хочу только запустить чистую цель, если переменная BUILD_ENV настроена на разработку, или просто clean_info в противном случае. (Мне просто нужен способ вызова определенного набора целей на основе значения переменной.) – qodeninja