Shell Makefile-对函数“foreach';”的未终止调用:缺少“)';。停止
这个问题快把我逼疯了!以下是我的简单makefile:Shell Makefile-对函数“foreach';”的未终止调用:缺少“)';。停止,shell,build,foreach,makefile,Shell,Build,Foreach,Makefile,这个问题快把我逼疯了!以下是我的简单makefile: SOURCES = a b c $(foreach var,$(SOURCES),echo $(var);) all: @echo done 使用Make3.8,我得到了Makefile:3:**对函数“foreach”的未终止调用:missing')。停止。 使用make3.81,我得到Makefile:3:**缺少分隔符。停止。 但是,如果我将foreach行放在“all”目标内,它运行良好。救命 foreach将产生一系
SOURCES = a b c
$(foreach var,$(SOURCES),echo $(var);)
all:
@echo done
使用Make3.8,我得到了Makefile:3:**对函数“foreach”的未终止调用:missing')。停止。
使用make3.81,我得到Makefile:3:**缺少分隔符。停止。
但是,如果我将foreach行放在“all”目标内,它运行良好。救命 foreach将产生一系列
echo
命令。您不能将它们放在makefile的顶层。改用:
例如:
$ make
a
b
c
done
你把Make语法和shell语法弄混了 如果将此语句置于规则之外,它将扩展为 回声a;回声b;回声c 就Make而言,这是无稽之谈,因为1)
echo
不是有效的Make命令,2)Make不会接受扩展语句的值作为命令(除非使用eval
)
你应该:
$ make
a
b
c
done