通常在执行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
来源:CSDN
作者:LU_ZHAO
链接:https://blog.csdn.net/LU_ZHAO/article/details/104537427