android.mk是在哪儿,Android.mk基础
1、前言
Android.mk用于向编译系统描述源文件和共享库,它实际上是编译系统解析一次或多次的微小GNU makefile片段。它的语法支持将源文件分组位模块,模块是静态库、共享库或独立的可执行文件。
2、简单示例
首先来看一个最简单的Android.mk的例子,如下所示:
# A simple Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES :=hello.c
LOCAL_MODULE :=helloworld
include $(BUILD_EXECUTABLE)
对该Android.mk文件进行解析,如下:
LOCAL_PATH := $(call my-dir)
每个Android.mk文件必须以定义LOCAL_PATH为开始,它用于在开发项目文件中查找源文件,而宏my-dir则由编译系统提供,返回包含Android.mk的目录路径。
include $(CLEAR_VARS)
CLEAR_VARS变量由编译系统提供,并指向一个特定的GNU Makefile,由它负责清理很多LOCAL_XXX的值,例如:LOCAL_MODULE、LOCAL_SRC_FILES等,但是不清理LOCAL_PATH,这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的,清理后才能避免相互影响。
LOCAL_SRC_FILES := hello.c
LOCAL_SRC_FILES变量必须包含将要打包成模块的C/C++源文件,不必列出头文件,编译系统会自动找出依赖的文件,缺省的C++源码的拓展名为.cpp,也可以通过LOCAL_CPP_EXTENSION进行修改。
LOCAL_MODULE := helloworld
LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块,名字必须唯一并且不包含空格,Build System会自动添加适当的前缀和后缀。
include $(BUILD_EXECUTABLE)
BUILD_EXECUTABLE是编译系统提供的一个变量,指向一个特定的GNU Makefile脚本,表示要编译成一个可执行的文件,如果想编译成动态库则可以用BUILD_SHARED_LIBRARY,如果想编译成静态库则可以用BUILD_STATIC_LIBRARY。
android.mk是在哪儿,Android.mk基础相关推荐
- 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )
文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
版权信息:本文为本人原创,欢迎转载,但请著明出处,并保留本版权信息. Android NDK编译脚本编写起来还是是比较简单条理的,然而它的语法和传统的linux GNU Make编译脚本的编写似乎有很 ...
- android config.mk,android编译分析之10—config.mk
config.mk可以说是android编译系统中关于配置环境的一个总的makefile,定义了编译环境的方方面面.执行完config.mk就完成了android编译系统的所有准备工作,即准备好了所有 ...
- Android 系统(181 )----Android中各类.mk文件的编写
Android中各类.mk文件的编写 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_STATIC_JAVA_LIBRARIES := ...
- Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App
目录 一.Android 编译 1. 编译流程 2. Soong 介绍 3. build.sh 二.Android.mk 解析 三.Android.bp 解析 1. 模块类型 2. 模块属性 四.An ...
- android.mk 添加v7_在Android上以命令行方式移植FFmpeg
最近要做视频I帧提取和摘要生成的项目,在Android平台上的应用,经过调研,发现ffmpeg有很多相关功能的轮子,因此考虑将ffmpeg移植到Android平台.为了更好解耦和以及更多的文档参考,选 ...
- [Android] SQLite数据库之增删改查基础操作
在编程中经常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,能够支持Windows/Linux/Un ...
- android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础
各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView.闲话休提,言归正转.让我们一起Talk Androi ...
- Android camera(4)---Android Camera开发之基础知识篇
Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...
最新文章
- 蚂蚁金服面试经历-临场发挥
- 重庆市计算机二级考试大纲,重庆市二级计算机考试大纲.doc
- 遭遇一次MySQL猜解注入攻击
- asp.net web常用控件FileUpload(文件上传控件)
- html5(mp4)无法播放,HTML5的Video标签有部分MP4无法播放的问题解析(多图)
- SpringBoot 如何生成接口文档,老鸟们都这么玩的!
- Maven (1)---maven 基础知识
- spark学习-69-源代码:Endpoint模型介绍(1)
- [笔记一]Essential JavaScript Design Patterns For Beginners
- 开源三维地球Cesium中如何离线加载卫星影像和高程DEM数据
- Windows操作系统----安全机制----Token
- Android按键音
- 如何获客:3招做好触客营销实现高效获
- 以自己的电脑作为服务器,搭建网站,外网可访问
- python跳一跳脚本详解_跳一跳 python脚本 改进版
- opencv+dlib实现给蒙娜丽莎“配”眼镜
- AMOS分析技术:模型整体拟合度指标
- D 创始人及员工,被批捕!这和 B站有啥关系?
- 云计算——详细思维导图
- django图书管理系统: