`
scliu0718
  • 浏览: 51475 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Android中JNI开发(二)Android.mk写法

 
阅读更多
Android.mk文件的写法:
 ---------- cut here ------------------
   LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)

   LOCAL_MODULE    := hello-jni
   LOCAL_SRC_FILES := hello-jni.c

   include $(BUILD_SHARED_LIBRARY)
---------- cut here ------------------


现在,让我们解释一下这几行:

  LOCAL_PATH := $(call my-dir)
一个Android.mk文件的开头必须LOCAL_PATH变量的定义。它是用来在开发树中查找源文件。在这个例子中,宏功能“my-dir”,提供构建系统,用于返回在当前目录(即该目包含的路径Android.mk文件本身)。

  $(CLEAR_VARS)
通过构建系统和点到CLEAR_VARS变量特殊的GNU Makefile文件,这个文件中将清除许多LOCAL_XXX的变量为你(例如LOCAL_MODULE ,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等等。),与除LOCAL_PATH。这是必要的,因为所有的建设控制文件都在一个单一的GNU Make的执行上下文分析所有的变量。

  LOCAL_MODULE:= HELLO-JNI
LOCAL_MODULE变量必须被定义来确定每个模块,你描述在你的Andr​​oid.mk。该名称必须是*独特的和不包含任何空格。需要注意的是,构建系统会自动添加适当的相应的生成的文件的前缀和后缀。换言之,一个命名为'foo'的共享库模块将产生'libfoo.so“。

重要注意事项:
如果你的名字你的模块libfoo的,构建系统不会添加另一种的'lib'前缀,并会生成libfoo.so。这是为了支持Android.mk文件,源于Android平台。

  LOCAL_SRC_FILES:= HELLO-jni.c
LOCAL_SRC_FILES变量必须包含C和/或C + +源文件的列表文件将被建造和组装到模块中。需要注意的是,你应该没有列出头文件和包含的文件,因为生成系统将
自动为你建立链接,只列出源文件将被直接传递给编译器即可。

需要注意的是C + +源文件的默认扩展名是“.CPP。这是
然而,可以通过定义变量指定一个不同的LOCAL_CPP_EXTENSION。不要忘了最初的“.”(即“.CXX”,而不是“CXX”)。

  $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY是由编译系统提供的一个变量,即一个GNU Makefile脚本,负责收集所有的中定义的LOCAL_XXX变量,因为最新的信息“include $(CLEAR_VARS)”,并决定建立什么,以及如何做到这一点。还有BUILD_STATIC_LIBRARY生成静态库。也就是说:
include $(BUILD_SHARED_LIBRARY)与include $(BUILD_STATIC_LIBRARY)将决定当前的库以共享方式还是静态的方式来创建
在一个Android.mk中可定义多个库,结构如下:
include $(CLEAR_VARS)
LOCAL_MODULE  := native
LOCAL_SRC_FILES := native.c
include $(BUILD_SHARED_LIBRARY)


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics