MakeFile 变量覆盖 override

帅比萌擦擦* 提交于 2020-02-28 05:31:51

通常在执行make时,如果通过命令行定义了一个变量,那么它将替代在Makefile中出现的同名变量的定义。就是说,对于一个在Makefile中使用常规方式(使用“=”、“:=”或者“define”)定义的变量,我们可以在执行make时通过命令行方式重新指定这个变量的值,命令行指定的值将替代出现在Makefile中此变量的值。如果不希望命令行指定的变量值替代在Makefile中的变量定义,那么我们需要在Makefile中使用指示符“override”来对这个变量进行声明,像下边那样:

override <variable> = <value>
override <variable> := <value>
override <variable> += <value>

对于追加方式需要说明的是:变量在定义时使用了“override”,则后续对它值进行追加时,也需要使用带有“override”指示符的追加方式。否则对此变量值的追加不会生效。

example

不使用override:

192:test lurongming$ cat makefile
ZHAOLU = zhaolu

all:
	echo "ZHAOLU" $(ZHAOLU)
192:test lurongming$ make
echo "ZHAOLU" zhaolu
ZHAOLU zhaolu
192:test lurongming$ make ZHAOLU="ZHAOLU"
echo "ZHAOLU" ZHAOLU
ZHAOLU ZHAOLU

使用override:

192:test lurongming$ cat makefile
override ZHAOLU = zhaolu

all:
	echo "ZHAOLU" $(ZHAOLU)
192:test lurongming$ make
echo "ZHAOLU" zhaolu
ZHAOLU zhaolu
192:test lurongming$ make ZHAOLU="ZHAOLU"
echo "ZHAOLU" zhaolu
ZHAOLU zhaolu
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!