2021-04-09 Android mk文件ifeq、ifneq和filter语句学习

              Android mk文件ifeq、ifneq和filter语句学习

 

一、ifeq 判断语句,用于比较两个参数,如果两个参数相等,则执行下面的内容。例如:

ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)), box)
    LOCAL_CFLAGS += -DTARGET_BOARD_PLATFORM_PRODUCT_BOX
endif

二、ifneq 判断语句,用于比较两个参数,如果两个参数不等,则执行下面的内容。例如:

ifneq (,$(filter userdebug eng user,$(TARGET_BUILD_VARIANT)))
init_options += -DALLOW_LOCAL_PROP_OVERRIDE=1 -DALLOW_DISABLE_SELINUX=1
else
init_options += -DALLOW_LOCAL_PROP_OVERRIDE=0 -DALLOW_DISABLE_SELINUX=0
endif

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

sources := a b c d e f g
# 指定的模式为 a b g ,多个模式间,用空格区分
$(filter a b g , $(sources))
# 上式返回值为
# a b g


sources := a b c d e f g
# 指定的模式为 z h ,多个模式间,用空格区分
$(filter z h , $(sources))
# 上式返回值为
# null


四、ifneq + filter 应用 ifneq ($(filter A B C, $(TARGET)),),TARGET等于特定的值执行里面的内容,注意第二个参数为NULL,区分小写。

ifeq ($(strip $(RK3288_HDMI_DISPLAY)),true)
	ifneq ($(filter box atv tablet, $(strip $(TARGET_BOARD_PLATFORM_PRODUCT))), )
	LOCAL_CFLAGS += -DBOX_HAL
	endif
endif

五、mk文件应该没有与&& 、或|| 表达式,只能用下面的语句实现与、或。

ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)),tablet)
LOCAL_CPPFLAGS += -DRK322x_MID
endif
ifneq ($(filter box atv, $(strip $(TARGET_BOARD_PLATFORM_PRODUCT))), )
LOCAL_CPPFLAGS += -DRK322x_BOX
endif
ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)),phone)
LOCAL_CPPFLAGS += -DRK322x_PHONE
endif
ifeq ($(strip $(TARGET_BOARD_PLATFORM_PRODUCT)),vr)
LOCAL_CPPFLAGS += -DRK322x_VR
endif
endif

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值