我有一个这样创建的头文件列表:
test
哪个会生成类似a / a.h b / b.h ...的列表...
但是当我在for循环中使用它时:
expand=$(1)/$(1).h
HDRS=$(foreach x, $(DIRS), $(call expand,$(x)))
$$ i为空。 cp失败,只有一个参数。
$$ i的常规变体($ i,$$ i,$(i),$ {i}),不做任何更改,$(HDRS)的常规变体(“ $(HDRS )”等。
gmake将for循环回显为
for i in $(HDRS) ; do \
echo $$i \
cp $$i $(some_dir) \
done
哪个看起来正确。
但是隐式bash shell发出错误“ / bin / sh -c:第5行:语法错误:文件意外结束”
gmake然后由于失败的命令而退出。
答案 0 :(得分:1)
由于\
,make将配方作为一行输出。这混淆了外壳。请改用;
代替行终止符:
for i in a.h b.h ; \
do \
echo $i ; \
cp $i somedir ; \
done