
编写Android.mk文件

以下是SDL2源码中Android.mk文件:

以上脚本配置了SDL static library、SDL static library、SDL main static library三个库的编译规则。
每个模块中,使用LOCAL_MODULE配置模块名称,下文还会有提及;LOCAL_C_INCLUDES等变量的配置编译设置,见名知意,不一一解释了。
每个模块的编译脚本,第一行调用include $(CLEAR_VARS),清除之前所有变量值。
每个模块的配置脚本,最后一行调用include (BUILD_SHARED_LIBRARY),编译成动态库,或include (BUILD_STATIC_LIBRARY),编译成静态库。
LOCAL_SRC_FILES变量是最难写、也最最重要的配置,甚至可以说,写Android.mk就是在写LOCAL_SRC_FILES也不为过。为了优雅的配置好它,这里使用了2个函数。
wildcard函数:批量获取所有文件,仅有一个正则语法参数。
subst函数:字符串替换。参数很多,3个或以上,将字符串(参数3、4……N)中的子串(参数1)替换为制定字符串(参数2)。
在这里,使用wildcard+正则批量配置源文件,使用subst修改源文件路径格式——绝对路径改为相对路径。(笔者不明白,为什么要转成相对路径,或许只是一个约定习惯吧)
cmd调用Andr

这还是SDL2源码里的脚本,如下:

重点就在最后一行,之前的全是配置各种路径。(for arg in $*遍历参数的方法,可以学习下)
ndk-build重要参数:
- APP_BUILD_SCRIPT:指定脚本。(上文中的Android.mk)
- APP_ABI:指定CPU架构。
- APP_PLATFORM:指定安卓平台版本。
-APP_MODULES:指明需编译的模块,这里对应Android.mk中的LOCAL_MODULE。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!