makefile 的ifeq,filter,strip 简单使用。

ifeq (,$(filter $(strip $(AAA)), BBB CCC))
do something
else
do nothing
endif

ifeq语句

ifeq : 判断语句,用于比较两个参数是否相等,相等则该语句通过。

如果a和b相等,则do something

ifeq (a, b)
    # do something
endif

filter语句
filter: 过滤语句,过滤掉不符合指定的模式的内容,仅保留符合指定的模式的内容。

VAR := 1 2 3 4 5
指定的模式为 1 2 3,多个模式之间用空格区分
$(filter 1 2 3 , $(VAR))
结果是:
1 2 3

3)
strip 去空字符语句,去掉字串中开头和结尾的空字符(空字符包括空格、[Tab]等不可显示字符)。

VAR = 1 2 3
$(strip $(VAR))
结果是:
1 2 3

总结:

看完这三个语句的说明,我们再来看最开始的

ifeq (,$(filter $(strip $(AAA)), BBB CCC))
do something
else
do nothing
endif

第一种情况:
当AAA 中有 BBB 或者 CCC 的时候:
AAA= BBB DDD
$(strip $(AAA)= BBB DDD
上面就可以写为

ifeq (,$(filter BBB DDD, BBB CCC))
do something
else
do nothing
endif

$(filter BBB DDD, BBB CCC) = BBB
上面就可以写为

ifeq (,BBB)
do something
else
do nothing
endif

所以结果为do nothing。

第二种情况:
当AAA 中没有 BBB 或者 CCC 的时候:

AAA= EEE
$(strip $(AAA)= EEE
上面就可以写为

ifeq (,$(filter EEE, BBB CCC))
do something
else
do nothing
endif

$(filter EEE, BBB CCC) = NULL
上面就可以写为

ifeq (,NULL)
do something
else
do nothing
endif

所以结果为do something。

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值