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   这两个字符串都被减去了。这里说明的只是类似减法,并不是真正的减法。作为另一类操作供大家参考。


 

 

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