Android.mk 介绍

基于  Android NDK 的学习之旅-----Android.mk  介绍

一个Android.mk file用来向编译系统描述你的源代码。具体来讲:该文件是GNU Makefile的一小部分,会被编译系统解析一次或屡次。你能够在每个Android.mk file中定义一个或多个模块,你也能够在几个模块中使用同一个源代码文件。编译系统为你处理许多细节问题。html

一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件须要先编译,哪些文件须要后编译,哪些文件须要从新编译,甚至于进行更复杂的功能操做,由于 makefile就像一个Shell脚本同样,其中也能够执行操做系统的命令。函数

makefile带来的好处就是——“自动化编译”,一旦写好,只须要一个make命令,整个工程彻底自动编译,极大的提升了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,通常来讲,大多数的IDE都有这个命令,好比:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。工具

Make工具最主要也是最基本的功能就是经过makefile文件来描述源程序之间的相互关系并自动维护编译工做。而makefile  文件须要按照某种语法进行编写,文件中须要说明如何编译各个源文件并链接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括  Windows NT 下的编译器--维护编译信息的经常使用方法,只是在集成开发环境中,用户经过友好的界面修改 makefile  文件而已。学习

下面直接看一个实例:spa

Jni 文件树  以下 操作系统


Android.mk文件 以下:htm

LOCAL_PATH := $(call my-dir) blog

一个Android.mk file首先必须定义好LOCAL_PATH变量。它用于在开发树中查找源文件。在这个例子中,宏函数’my-dir’, 由编译系统提供,用于返回当前路径(即包含Android.mk file文件的目录)。开发

2include $( CLEAR_VARS)get

CLEAR_VARS  由编译系统提供,指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),LOCAL_PATH 。这是必要的,由于全部的编译控制文件都在同一个GNU MAKE执行环境中,全部的变量都是全局的。

3LOCAL_MODULE :=  HcSyncml

LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每一个模块。名称必须是惟一的,并且不包  含任何空格。注意编译系统会自动产生合适的前缀和后缀,换句话说,一个被命名为'HcSyncml'的共享库模块,将会生成'libHcSyncml.so'文件。

4LOCAL_C_INCLUDES  := $(LOCAL_PATH)/extra_inc$(LOCAL_PATH)/main_inc

LOCAL_C_INCLUDES 中加入所须要包含的头文件路径

5LOCAL_SRC_FILES

LOCAL_SRC_FILES中加入源文件路径(须要编译的文件),多个文件用 ‘\’ 隔开

6LOCAL_LDLIBS  += -L$(SYSROOT)/usr/lib –llog

表示容许打印Log

 

       感谢Carrot  文章

相关文章
相关标签/搜索