makefile中对变量(中的字符串)做类似减法操作,去除变量中的某些空格隔开的字符串(如果这边字符串作为变量名,其值为空)

本文介绍如何在Makefile中使用条件语句和变量遍历来实现类似减法的操作,即从一个变量中移除那些值为空的字符串项。通过示例解释了如何检查变量是否为空,并在满足条件时从目标变量中排除该项,最终得到一个不包含空值的新变量。

 

#################脚本内容如下#####################

3RDPARTY_CMMB :=  max2scend
3RDPARTY_GPS := bcm4751
PRJ_PCB_VERSION := 35pcb222
3RDPARTY_WIFI := 777wifi778
#3RDPARTY_EMPTY :=
3RDPARTY_MSENSOR = bmm050

 

SET_VAR_NAMES_OLD := 3RDPARTY_CMMB 3RDPARTY_GPS 3RDPARTY_EMPTY 3RDPARTY_TP   PRJ_PCB_VERSION
SND_DEFINE_VAR_NAMES_OLD := $(foreach n_all_value, $(SET_VAR_NAMES_OLD),$(if $($(n_all_value)) ,$(n_all_value)))

 

#################脚本内容结束#####################

 

$(if $($(n_all_value)) ,$(n_all_value))   

       以3RDPARTY_EMPTY为例,当n_all_value循环到3RDPARTY_EMPTY   时,这个语句判断3RDPARTY_EMPTY是否为空,如果是空,把3RDPARTY_EMPTY (注意,不是3RDPARTY_EMPTY  这个变量中的值) 替换为空,否则,即3RDPARTY_EMPTY 之前有赋值,不为空,那么就返回3RDPARTY_EMPTY 这个字符串。  

 

最后的结果是SND_DEFINE_VAR_NAMES_OLD 中的值为:3RDPARTY_CMMB  3RDPARTY_GPS  PRJ_PCB_VERSION

 

即 最后那句 foreach  语句等效于

SND_DEFINE_VAR_NAMES_OLD :=3RDPARTY_CMMB  3RDPARTY_GPS  PRJ_PCB_VERSION

 

3RDPARTY_EMPTY  和 3RDPARTY_TP   这两个字符串都被减去了。这里说明的只是类似减法,并不是真正的减法。作为另一类操作供大家参考。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值