zoukankan      html  css  js  c++  java
  • Android.mk 常用宏和变量

    android ndk开发有一个重要的文件 Android.mk,他虽然重要,但是对它进行深入介绍的文档却比较的少,这里将对Android.mk中常用的宏和变量进行说明:

        由于这一部分的内容多,资料零散,本文档会进行持续性的更新

        方便他人亦是方便自己,如果觉得还行就下右边投票吧,这样可以帮助其他人更快的找到解决问题的方法;有疑问的也可留言哦, 谢谢!

    工具/原料

    • Win7 x64
    • jdk1.8.0_11
    • adt-bundle-windows-x86_64-20140702
    • android-ndk-r10

    变量

    1. 1

      LOCAL_PATH := $(call my-dir)

      1、解释 LOCAL_PATH

      英文:如下图

      中文:Android.mk 开始必须定义变量 LOCAL_PATH,它用来指定源文件的位置

      2、解释 my-dir

      英文:如下图

      中文:编译系统提供的'my-dir'宏函数,被用来获取当前的目录。

      Android.mk 常用宏和变量
    2. 2

      include $(CLEAR_VARS)

      1、解释 CLEAR_VARS:

      英文:如下图

      中文:编译系统提供CLEAR_VARS变量,它指向了一个用来清除 LOCAL_ 开头的变量(LOCAL_PATH除外)的makefile文件,需要它的原因是整个的编译上下文中,所有的变量都是全局的,这样就可以保证这些变量只在局部范围内起作用;

      Android.mk 常用宏和变量
    3. 3

      LOCAL_MODULE := hello-jni

      1、解释 LOCAL_MODULE:

      英文:如下图

      中文:每一个android.mk文件中都必须定义一个模块标示 LOCAL_MODULE , 这个名字必须是唯一的并且不包含任何的空格,编译系统将自动的修改生成文件的前缀和后缀,如一个模块为'foo'共享库将被改为'libfoo.so';

          重要提示,如果你的模块名为'libfoo',编译系统生成的文件为 'libfoo.so', 而不会去再增加前缀,当你使用的时候,android平台会自动识别;

      Android.mk 常用宏和变量
    4. 4

      LOCAL_SRC_FILES := hello-jni.c

      1、解释 LOCAL_SRC_FILES

      英文:如下图

      中文:LOCAL_SRC_FILES必须包含一系列的C/C++源文件,他们将会被建立和装载到模块中,注意你不应该把需要包含的头文件列在这里,因为建立系统将自动计算依赖项,只有源文件才能够被编译器识别;

      2、解释 LOCAL_CPP_EXTENSION

      英文:如下图    

      中文:注意默认的c++文件扩展名是'.cpp', LOCAL_CPP_EXTENSION可以用来指定不同类型的扩展名,不要忘了前面的点(如:'.cxx' 将起作用, 但是 'cxx'不会起作用).

      Android.mk 常用宏和变量
    5. 5

      include $(BUILD_SHARED_LIBRARY)

      1、解释 BUILD_SHARED_LIBRARY

      英文:如下图

      中文:‘建立系统’提供个变量 BUILD_SHARED_LIBRARY, 将根据在‘include’之前定义的所有的信息和LOCAL_前缀的变量,决定将建立什么,如何正确的生成共享库;

      2、解释  BUILD_STATIC_LIBRARY

      英文: 如下图

      中文: 同上,只不过它生成的是静态库

      Android.mk 常用宏和变量
    6. 6

      LOCAL_C_INCLUDES :=   $(NDK_ROOT)/sources/third_party/freetype 

      1、解释 NDK_ROOT

      中文:NDK_ROOT 代表的是ndk的根目录,如我的是“D:Androidandroid-ndk-r10”,这个例子是用来加载ndk根目录下的freetype的头文件路径;

    7. 7

      LOCAL_LDFLAGS :=

          $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libfreetype.a

      1、解释 LOCAL_LDFLAGS

      中文:用来加载用户自己的静态库(.a文件)

      2、解释 TARGET_ARCH_ABI

      中文:当前的cpu/abi的类型,在链接不同类型的CPU_ABI时非常有用,如下图

      Android.mk 常用宏和变量
    8. 8

      $(call import-add-path,$(LOCAL_PATH)/libsrc)

      1、解释:import-add-path

      中文:增加自己的路径到 NDK_MODULE_PATH 环境变量中,再非ndk根目录/sources下编译时会用到


  • 相关阅读:
    判断ArryaList有没有重复对象的方法
    使用Java对字符串进行升序排序
    用三层盒子结构实现多边框
    盒子模型的margin负数用法
    解决盒子浮动时margin会显示两倍的美观问题
    纯HTML和CSS实现JD轮播图
    Java的策略模式
    Java的适配器模式
    Java的单例模式
    阿里云服务器配置
  • 原文地址:https://www.cnblogs.com/bill-technology/p/4130830.html
Copyright © 2011-2022 走看看