如何在makefile配方中设置环境变量?

时间:2012-04-15 12:13:54

标签: makefile

这是一个简化的Makefile:

all:
    @for (( i = 0; i < 5; ++i )); do \
         var="$$var $$i"; \
         echo $$var; \
     done
    @echo $$var

我认为“var”的值是“0 1 2 3 4”,但输出是:

0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
               <--- NOTHING!!!

正如你所看到的,最后一个回声是“没什么”。有什么问题?

1 个答案:

答案 0 :(得分:11)

来自here

  

当需要执行配方来更新目标时,通过为配方的每一行调用一个新的子shell来执行它们...

     

请注意:这意味着设置shell变量并调用shell命令(例如cd,为每个进程设置本地上下文)不会影响配方中的以下行。如果要使用cd来影响下一个语句,请将两个语句放在一个配方行中。然后make将调用一个shell来运行整行,shell将按顺序执行语句。

尝试以下方法:

all:
    @for (( i = 0; i < 5; ++i )); do \
         var="$$var $$i"; \
         echo $$var; \
     done; \
    echo $$var
相关问题