我有一个非常简单的Makefile(只是递归调用另一个子目录make):
all:
cd addons/godot-haskell-plugin && make && cd -
run:
cd addons/godot-haskell-plugin && make run && cd -
我想做的是
ENV_VAR
。ENV_VAR=1 make all
的操作应与上面的make all
完全一样)。make all
和{{ 1}}一样,输入“ n”只是回显一条消息并退出。我知道要在bash中执行此操作,您可以结合使用make run
和echo
函数。但目前尚不清楚如何在Make中执行此操作。
答案 0 :(得分:4)
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
请注意,我对一个变量使用“使有条件”,而对另一变量使用“ bash”作为条件。您可以使用任何一种,但是在这种情况下,这是最干净的方法。