makefile 参数变量值覆盖 override

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

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

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

#Makefile内容 (没有用override)
SRCS := programA.c programB.c programC.c

all:
    @echo "SRCS: " $(SRCS)

# bash中运行make
$ make SRCS=nothing
SRCS:  nothing

#################################################

# Makefile内容 (用override)
override SRCS := programA.c programB.c programC.c

all:
    @echo "SRCS: " $(SRCS)

# bash中运行make
$ make SRCS=nothing
SRCS:  programA.c programB.c programC.c

https://blog.csdn.net/passerbysrs/article/details/45338621?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-2&spm=1001.2101.3001.4242

代码案例:

MAKEFILE_PRODUCT := $(PFM_PRODUCTS_PATH)/$(PRODUCT_NAME)/Makefile.product
ifneq ($(MAKEFILE_PRODUCT), $(wildcard $(MAKEFILE_PRODUCT)))
PRODUCT_LIST := $(notdir $(shell find $(PFM_PRODUCTS_PATH)/ -maxdepth 1 -type d))
PRODUCT_LIST := $(sort $(filter-out solutions, $(PRODUCT_LIST)))
PRODUCT_LIST := $(PRODUCT_LIST:%=<%>)
override PRODUCT := $(shell read -p "Please select PRODUCT= [ ${PRODUCT_LIST} ]:" PRODUCT; echo $$PRODUCT)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值