在目标中设置make变量

时间:2011-11-21 15:35:52

标签: linux compilation gnu-make

鉴于GNU Make 3.81。

以下makefile

all:
        echo before
TEST=1
        echo after

产生“命令在第一个目标之前开始。停止。”在“TEST = 1”行。

从另一侧向TEST添加“覆盖”如下:

all:
        echo before
override TEST=1
        echo after

运行正常(在“打印”之前和之后)。

问题:

  1. 为什么“TEST = 1”不正常,而“覆盖TEST = 1”还可以吗?

  2. 为什么在目标命令中“覆盖TEST = 1”没问题?普罗巴

1 个答案:

答案 0 :(得分:1)

我猜是

override TEST=1

被解释为:

override: TEST=1

...这在GNU make中完全有效。

您可以简单地通过命名目标然后像在make文件的全局部分中设置变量来修改每个目标的变量,例如:

<target>: <variable>:=<value>
<target>: <variable>=<value>
<target>: <variable>+=<value>

通过这种方式,只需为一个目标文件附加内容或修改CFLAGS即可...

注意: 但是,在您尝试的目标命令块中进行变量赋值是错误的语法。