for循环变量在gmake中为空

时间:2018-06-29 16:14:38

标签: gnu-make

我有一个这样创建的头文件列表:

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然后由于失败的命令而退出。

1 个答案:

答案 0 :(得分:1)

由于\,make将配方作为一行输出。这混淆了外壳。请改用;代替行终止符:

for i in a.h b.h ; \
do \
    echo $i ; \
    cp $i somedir ; \
done