Makefile目标:无法从循环中分配变量

时间:2017-03-02 13:39:57

标签: unix for-loop makefile

问题是,furl没有从file变量中获得指定值。如果我使用任何纯文本而不是$$file,它都有效。我不知道为什么这不起作用。

生成文件:

test:
    @for file in $(shell pwd)/demo/*; do \
         $(eval furl := $(shell echo $$file)) \
         echo $(furl); \
    done

我很确定这应该很容易修复,但我找不到解决方案。有什么想法吗?

我正在使用最新的lubuntu操作系统。

2 个答案:

答案 0 :(得分:2)

问题是$file仅存在于执行for循环的shell中,因此make看不到变量。

如何修复它取决于你实际想做什么。

答案 1 :(得分:2)

你在配方中搞乱了shell和Make变量。我认为furl应该是shell变量。像这样:

test:; @for file in demo/*; do \
         furl="`echo $$file`"; \
         echo "$$furl"; \
       done

通常,您不应在配方中指定Make变量。明显的例外是$(foreach)