鉴于GNU Make 3.81。
以下makefile
all:
echo before
TEST=1
echo after
产生“命令在第一个目标之前开始。停止。”在“TEST = 1”行。
从另一侧向TEST添加“覆盖”如下:
all:
echo before
override TEST=1
echo after
运行正常(在“打印”之前和之后)。
问题:
为什么“TEST = 1”不正常,而“覆盖TEST = 1”还可以吗?
为什么在目标命令中“覆盖TEST = 1”没问题?普罗巴
答案 0 :(得分:1)
我猜是
override TEST=1
被解释为:
override: TEST=1
...这在GNU make中完全有效。
您可以简单地通过命名目标然后像在make文件的全局部分中设置变量来修改每个目标的变量,例如:
<target>: <variable>:=<value>
<target>: <variable>=<value>
<target>: <variable>+=<value>
通过这种方式,只需为一个目标文件附加内容或修改CFLAGS
即可...
注意: 但是,在您尝试的目标命令块中进行变量赋值是错误的语法。