我正在使用带有“make”的Makefiles来处理很多事情,例如启动/停止/配置我写的服务。有时我想阅读用户的输入。我知道的唯一方法是让用户在执行make时使用NAME = VALUE传递输入,或者将类似read -p "setting X: " var ; echo $$var
的命令放入Makefile中。
NAME = VALUE的缺点是用户必须手动设置它,我不能“要求”他输入值。 read
的缺点是读取值不能(或者我不知道如何)保存在变量中,因此不能多次使用。
有没有办法在执行特定的makefile目标时将用户输入读入变量? (我不想将FILE ?= 'read -p "value: " var ; echo $$var'
放在标题中,因为只需要一个目标的值,当我将该行放在目标本身时,我得到错误“/ bin / bash:FILE:Command没找到。“。
答案 0 :(得分:0)
我为此目的使用中间文件。
INPUT = dialog --inputbox 80 10 10
all: case1 case2
case1: read-input
echo $(shell cat read-input) in case 1
case2: read-input
echo $(shell cat read-input) in case 2
.INTERMEDIATE: read-input
read-input:
$(INPUT) 2>$@