Makefile:为一个构建步骤设置env var

时间:2014-04-10 15:54:50

标签: makefile environment-variables

我正在使用GNU make和Makefiles。是否可以为一个构建步骤设置环境变量?

目前我正在做这样的事情:

VAR:=valueA
step1:
    echo $(VAR)

然后,"制作第1步"将打印" valueA"。

是否可以为一个构建步骤重新定义env var?

VAR:=valueA
step1:
    echo $(VAR)
step2:
    VAR:=valueB
    echo $(VAR)

我想"制作第1步"打印" valueA",但"制作step1"打印" valueB"。

2 个答案:

答案 0 :(得分:5)

首先,那些不是环境变量,它们是变量。理解并记住差异非常重要。

其次,是的,您可以使用target-specific variables执行此操作:

VAR := valueA
step1:
        echo $(VAR)

step2: VAR := valueB
step2:
        echo $(VAR)

如果您确实希望该值存在于子进程的环境中,则可以使用make的export关键字:

export VAR := valueA

step1:
        echo $$VAR

答案 1 :(得分:0)

补充MadScientist的答案: 如果您确实需要设置 environment 变量,因为您调用的命令需要设置它,您需要在recipe s的shell命令中执行此操作:

VAR := value0

all: step1 step2
step1: VAR := value1
step2: VAR := value2

all step1 step2 step3:
        ENVVAR=$(VAR) sh -c 'echo the nested sh for $@ has ENVVAR = $$ENVVAR'