美文网首页
Android.mk语法详解

Android.mk语法详解

作者: 对着天说晚安 | 来源:发表于2018-12-11 10:01 被阅读0次
LOCAL_PATH := $(call my-dir) 
  1. LOCAL_PATH := $(call my-dir)
    每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。

include $(CLEAR_VARS) 
  1. include $(CLEAR_VARS)
    CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.
    例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.
    这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。

LOCAL_MODULE    := hello-jni 
  1. LOCAL_MODULE := hello-jni
    LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo。则生成libfoo.so. 不再加前缀。

LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT) 
  1. LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT) 指定最后生成的模块的目标地址
    TARGET_ROOT_OUT:根文件系统,路径为out/target/product/generic/root
    TARGET_OUT:system文件系统,路径为out/target/product/generic/system
    TARGET_OUT_DATA:data文件系统,路径为out/target/product/generic/data
    除了上面的这些,NDK还提供了很多其他的TARGET_XXX_XXX变量,用于将生成的模块拷贝到输出目录的不同路径
    默认是TARGET_OUT

LOCAL_SRC_FILES := hello-jni.c 
  1. LOCAL_SRC_FILES变量必须包含将要打包如模块的C/C++ 源码。不必列出头文件,build System 会自动帮我们找出依赖文件。缺省的C++源码的扩展名为.cpp. 也可以修改,通过LOCAL_CPP_EXTENSION
    --
include $(BUILD_SHARED_LIBRARY)
  1. BUILD_SHARED_LIBRARY:是Build System提供的一个变量,指向一个GNU Makefile Script。
    它负责收集自从上次调用 include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定编译为什么。
    BUILD_STATIC_LIBRARY :编译为静态库。
    BUILD_SHARED_LIBRARY :编译为动态库
    BUILD_EXECUTABLE :编译为Native C可执行程序
    BUILD_PREBUILT :该模块已经预先编译
    NDK还定义了很多其他的BUILD_XXX_XXX变量,它们用来指定模块的生成方式。

LOCAL_CFLAGS += $(GLOBAL_CFLAGS)
LOCAL_CFLAGS += -fPIC
  1. LOCAL_CFLAGS:
    一个可选的设置,在编译C/C++ source 时添加如Flags。
    用来附加编译选项。 注意:不要尝试在此处修改编译的优化选项和Debug等级。它会通过您Application.mk中的信息自动指定。
    也可以指定include 目录通过:LOCAL_CFLAGS += -I<path>。 这个方法比使用LOCAL_C_INCLUDES要好。因为这样也可以被ndk-debug使用。

LOCAL_SHARED_LIBRARIES += libffmpeg-neon
  1. 添加动态链接库

LOCAL_STATIC_LIBRARIES += libIttiamhevcdec
  1. 添加静态链接库

LOCAL_C_INCLUDES += $(CODEC_SOURCE)/video/ffmpeg-2.7.1
  1. 一个可选的path列表。相对于NDK ROOT 目录。编译时,将会把这些目录附上。

LOCAL_LDLIBS := -llog -fpic -landroid -lz
  1. 可以用它来添加系统库。

参考链接:
https://www.cnblogs.com/reality-soul/p/6893248.html
https://blog.csdn.net/love_heller/article/details/51556434

相关文章

  • 2019-05-30

    转自 Android.mk 文件语法详解 ====================================...

  • 2018-08-09

    mark 引用如下的链接文章 Android.mk 文件语法详解 转:http://blog.sina.com.c...

  • Android.mk语法详解

    LOCAL_PATH := $(call my-dir)每个Android.mk文件必须以定义LOCAL_PATH...

  • Android.mk文件语法详解

    Android.mk简介: Android.mk文件用来告知NDK Build系统关于Source的信息。Andr...

  • NDK开发必知必会3⃣️MakeFile详解

    前言 Android.mk 的文件配置详解,能够读懂Android.mk;为何Google推荐使用cmake,而不...

  • cocos2d-x 系列

    NDK mk文件语法 0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关...

  • Android.mk语法

    翻译自docs/ANDROID-MK.html Indroduction 本篇文档描述Andrid.mk编译文件的...

  • 简书markdown

    Markdown语法详解

  • Android.mk 详解

    概述 文件用来向编译系统描述如何编译你的源代码。更确切地说,该文件其实就是一个小型的Makefile。由于该文件会...

  • Android.mk 详解

    Android.mk是Android提供的一个makefile文件,可以将源文件分组为模块。用来引用的头文件目录、...

网友评论

      本文标题:Android.mk语法详解

      本文链接:https://www.haomeiwen.com/subject/yxcshqtx.html