Make на самом деле не предназначен для того, чтобы быть интерактивным, но вы можете использовать его.
Существует более одного способа сделать это, но, поскольку вы, кажется, хотите, чтобы это поведение было специфичным для некоторых целей (all
и run
), я бы добавил цель PHONY, которая взаимодействует с пользователем и, возможно, прерывает работу. Make:
all run: check
.PHONY: check
check:
ifndef ENV_VAR
@echo Warning: ENV_VAR isn\'t defined\; continue? [Y/n]
@read line; if [ $$line == "n" ]; then echo aborting; exit 1 ; fi
endif
Обратите внимание, что я использую условное выражение Make для одной переменной и bashусловно для другого.Вы можете использовать любой из них, но в этом случае это самый чистый способ.