Android.mk详解

先看源码中的Demo。我的ndk安装路径为:D:\android-ndk-r10\samples\hello-jni\jni\Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

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

include $(BUILD_SHARED_LIBRARY)

LOCAL_PATH := $(call my-dir)定义当前目录

这句先定义了一个变量LOCAL_PATH并对其进行赋值,":="表示赋值,"+="表示追加,

"$(call)"表示调用一个宏

"my-dir"是由构建系统提供,其作用是返回当前Android.mk的所在目录(目录:(NDK_ROOT)/b/core/definitions.mk里面定义)

整行的意思是定义一个名为"LOCAL_PATH"并为其赋值为当前Android.mk文件所在的路径(必须放在第一行

include $(CLEAR_VARS)清理系统变量

  • "CLEAR_VARS"是由构建系统提供的一个变量,它指向了一个makefile文件,即(NDK_ROOT)/build/core/clear-vars.mk;

  • "$(CLEAR_VARS)"是对变量的使用,即获取变量值;

  • "include"表示包含另一个makefile文件;

  •   整行代码的意思是包含一个系统的makefile文件进来,并执行。

    "CLEAR_VARS"指向的makefile文件的作用是清理除"LOCAL_PATH"之外所有"LOCAL_"开头的变量,这个很有必要。构建系统在构建项目的时候,会将所有makefile文件加载在一起并自上而下执行的,其中自己定义的Android.mk只是整个构建过程的一个小模块,若不清理"LOCAL_"开头的变量,这些变量就会沿用前面模块保留的值,这将会导致在构建这个模块时出现不可预知的问题。

开头的变量通常就是系统定义的变量

LOCAL_MODULE    := hello-jni定义so库的名称

整行代码的意思是告诉构建系统,此构建目录的名称为"hello-jni",构建系统会对最终产物的文件名称添加前缀和后缀。一般情况下,上面代码对应的生成库的文件名称是"libhello-jni.a"或"libhello-jni.so"

LOCAL_SRC_FILES := hello-jni.c指定源文件

"LOCAL_SRC_FILES"是系统定义的变量,用于指定构建目标所需要的源文件,可以指定多个

    整行代码的意思是告诉构建系统,需要将哪些源文件加入到构建中。"LOCAL_SRC_FILES "可以指定多定多个文件,用空格或Tab隔开,如下:LOCAL_SRC_FILES := hello-jni.c hello1.c 

或则用"\" 换行的方式表示:LOCAL_SRC_FILES := hello-jni.c \

                                                                                 hello1.c 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值