从makefile覆盖变量

从makefile覆盖变量,makefile,Makefile,在我的makefile中有一个变量FOO: FOO = /path/to/bar 在makefile调用期间是否可以覆盖此变量?像下面这样的事情: FOO=/path/to/foo make all 在指定目标之前,将它们指定为Var=Value,如makefoo=/path/to/fooall $ cat Makefile Foo = asdf all: echo $(Foo) $ make all echo asdf asdf $ make Foo=bar all echo

在我的makefile中有一个变量
FOO

FOO = /path/to/bar
在makefile调用期间是否可以覆盖此变量?像下面这样的事情:

FOO=/path/to/foo make all

在指定目标之前,将它们指定为
Var=Value
,如
makefoo=/path/to/fooall

$ cat Makefile 
Foo = asdf

all:
    echo $(Foo)

$ make all
echo asdf
asdf
$ make Foo=bar all
echo bar
bar

GNU make手册的章节中指定了变量获取赋值的方式

变量可以通过几种不同的方式获取值:

  • 可以在运行make时指定替代值。看
  • 可以使用赋值(请参阅)或逐字定义(请参阅)在makefile中指定值
  • 环境中的变量成为make变量。看
  • 为每个规则提供几个自动变量的新值。每一个都有一个常规用途。看
  • 几个变量具有恒定的初始值。看
因此,正如三十二上校所指出的,您可以在命令行上覆盖makefile中设置的变量


如果希望这是一个要持久设置的变量,也可以使用
?=
赋值,然后使用该变量的环境值。

相对于命令行上目标名称的位置无关紧要。答案应该是这样的,简单明了,直截了当