android编译脚本详解,Android 编译脚本小解析。(include-path-for 解析)

之前没怎么好好看过 Android build系统中的mk,找个命令包开刀和大家分享一下吧

include-path-for

【相当于函数原型】 define include-path-for  #定义命令包, n 由调用者传递进来, 这个在 build/core/pathmap.mk $(foreach n,$(1),$(patsubst $(n):%,%,$(filter $(n):%,$(pathmap_INCL)))) endef // pathmap_INCL 在 build/core/pathmap.mk 文件中有定义,最后使用的时候可以看到 【函数内实现的解析】 foreach 遍历, patsubst 字符串替换, filter 过滤函数 【函数调用】 这里以external\dbus\bus 下的Android.mk 调用为例: ... LOCAL_C_INCLUDES:= \ $(call include-path-for, dbus) ... 调用命令包 include-path-for ,只有一个入参是 dbus 1.  foreach 入参 dbus 替换 $(1), 那么根据 foreach 的语法,就是把字符串 dbus 保持到 n 中 然后交给 $(patsubst $(n):%,%,$(filter $(n):%,$(pathmap_INCL))) 处理 2. patsubst    字符串替换, 这个函数需要3个参数 $(n):%,  %, $(filter $(n):%,$(pathmap_INCL))    参数1 翻译一下就是 “dbus:任意长字符串”    参数2 任意长字符串    参数3 是一个字符过滤函数。(下面就需要先处理这个函数了) 3. filter    在 pathmap_INCL 中找类型是 “dbus:任意长” 的字符串 // pathmap_INCL 列在下面了,发现没有符合的字符串    所以参数3 最后得到的是空     回到一下函数2,这里得到的就是一个空。 继续回到函数1,这里最后得到的就是 dbus 所以     LOCAL_C_INCLUDES:= \ $(call include-path-for, dbus) 最后结果是    LOCAL_C_INCLUDES:= \ dbus 好吧太绕口了,多看看吧, pathmap_INCL := \     bootloader:bootable/bootloader/legacy/include \     camera:system/media/camera/include \     corecg:external/skia/include/core \     dbus:external/dbus \     frameworks-base:frameworks/base/include \     frameworks-native:frameworks/native/include \     graphics:external/skia/include/core \     libc:bionic/libc/include \     libdrm1:frameworks/base/media/libdrm/mobile1/include \     libhardware:hardware/libhardware/include \     libhardware_legacy:hardware/libhardware_legacy/include \     libhost:build/libs/host/include \     libm:bionic/libm/include \     libnativehelper:libnativehelper/include \     libpagemap:system/extras/libpagemap/include \     libril:hardware/ril/include \     libstdc++:bionic/libstdc++/include \     libthread_db:bionic/libthread_db/include \     mkbootimg:system/core/mkbootimg \     opengl-tests-includes:frameworks/native/opengl/tests/include \     recovery:bootable/recovery \     system-core:system/core/include \     audio-effects:system/media/audio_effects/include \     audio-utils:system/media/audio_utils/include \     wilhelm:frameworks/wilhelm/include \     wilhelm-ut:frameworks/wilhelm/src/ut \     speex:external/speex/include

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值