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

Li *_*ong 6 makefile

这是一个简化的Makefile:

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

我想"var"的值是"0 1 2 3 4",但输出是:

0
0 1
0 1 2
0 1 2 3
0 1 2 3 4
               <--- NOTHING!!!
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,最后一个回声是"没什么".怎么了?

Eld*_*mov 11

这里:

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

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

请尝试以下方法:

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