Android之makefile
在Android的源代码中,随处可见Makefile,那么Makefile到底是用来干嘛的呢?其实Makefile和Maven、ANT、Gradle一样,属于构建工具,当项目比较庞大的时候,就可以使用makefile来构建项目了
makefile简介
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为Makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令
之前做C语言笔记的时候就写过关于Makefile的基本语法,这里就不再罗嗦了
链接:C语言之makefile
makefile在Android中的运用
在编译Android系统的时候,一个make就可以生成,那为何会生成呢?
其实仔细看,Android系统源码中,Makefile无处不在,其实整个过程就是Makefile在构建
Makefile在构建时候,make会检查文件时候是否被修改,修改参与编译,没修改的话就不会编译
Makefile有一些系统定义的变量和函数
Android常用的指定:
名称 | 作用 |
---|---|
LOCAL_PATH := $(call my-dir) |
调用my-dir函数,返回Android.mk文件所在的目录,放在第一行,地址当前所在目录 |
include file Makefile |
可以引入其他的Makefile文件 |
include $(CLEAR_VARS) |
编译模块时,清空LOCAL_MODULE等参数 |
LOCAL_MODULE |
模块名称 |
LOCAL_SRC_FILES |
编译需要的源文件 |
LOCAL_C_INCLUDES |
需要的头文件 |
LOCAL_SHARED_LIBRARIES |
编译需要的动态库 |
LOCAL_LDLIBS |
链接库 |
具体更深入关于Makefile可以参考:《跟我一起写 Makefile》
无意间发现一篇不错的博客,链接:Makefile 使用总结
Android之makefile的更多相关文章
- 3.android下Makefile编写规范
随着移动互联网的发展,移动开发也越来越吃香了,目前最火的莫过于android,android是什么就不用说了,android自从开源以来,就受到很多人的追捧.当然,一部人追捧它是因为它是Google开 ...
- zz android 系统 makefile文件(Android.mk)组织结构
Android.mk脚本结构 下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么.(这个文件被根目录下的makefile文件包含) 一. main.mk 1.检查版本 ...
- linux和Android的Makefile和android.mk
1. makefile 1.1 gcc的参数 -Wall: 是打开警告开关, -O: 代表默认优化,可选:-O0不优化,-O1低级优化,-O2中级优化,-O3高级优化,-Os代码空间优化. -g ...
- android的 makefile里 的常用 宏定义
在Android编译框架中,把许多固定的.反复用到的目录路径定义为 宏变量,常用 宏 如下: out/target/product/xxx的宏即为:PRODUCT_OUT out/target/pro ...
- Android发展的一个重要方面Makefile分析
Android发展的一个重要方面Makefile分析 随着移动互联网的发展,移动开发也越来越吃香了.眼下最火的莫过于android.android是什么就不用说了,android自从开源以来,就受到非 ...
- Android Makefile中是 如何识别 TARGET_PRODUCT 的
http://blog.csdn.net/stevenliyong/article/details/5285334 今天有时间小看一下Android 的Makefile, 终于稍有明白Android ...
- Android Studio导入Project、Module的正确方法
Gradle Project项目.Module模块导入 最近看到网上很多人在抱怨,Android Studio很难导入github上下载下来的一些项目,主要包括: 1.导入就在下载Gradle2.根本 ...
- android学习计划2
1.linux下Kconfig编写规范 2.linux下Makefile编写规范 3.android下Makefile编写规范 4.android.mk编写规范 5.android系统裁剪
- Android.mk 文件语法详解
0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...
随机推荐
- tableviewer自动调整列宽
public void resizeTableColumn(TableColumn[] treeColumns) { for (TableColumn tc : treeColumns) tc.pac ...
- 内网端口映射+dnslog
以前的DNSLOG部署在公网上也即自己的服务器上,产品依赖个人的环境不是很好.于是做了修改. 框架 细节 1)A域名的域名服务器指向B域名 ns0.B.com ns1.B.com 2)B域名的两个ns ...
- swoole,http\server 跨域---记一次php网站跨域访问上机实验
缘由:为了更好的体验swoole组件优良的协程Mysql客户端,实现更好的并发设计:写了一个小程序. 环境准备: 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个htm ...
- 025_自动为其他脚本添加解释器信息#!/bin/bash
#!/bin/bash#先使用 grep 判断对象脚本是否已经有解释器信息,如果没有则使用 sed 添加解释器以及描述信息if ! grep -q "^#!" $1; then # ...
- set/unset
自定义一个变量 name=value 查看现有变量 删除变量或函数 unset name
- strconv
导入strconv包 Append Format Parse 字符串转其他类型 parse返回两个值,一个转换值,一个err,没有错误时,err返回的是nil,有错误,err接受错误信息. 整型转字符 ...
- 【概率论】3-8:随机变量函数(Functions of a Random Variable)
title: [概率论]3-8:随机变量函数(Functions of a Random Variable) categories: Mathematic Probability keywords: ...
- C语言学习笔记1-数据类型和标识符
http://blog.csdn.net/jadeshu/article/details/50751901 1.数据类型 ---1.1基本类型 --------------数值型(short(2) i ...
- JavaWeb_(Mybatis框架)MyBatis整合Spring框架
MyBatis + Spring整合开发 a)使用Spring容器用单例模式管理Mybatis的sqlSessionFactory:b)使用Spring管理连接池.数据源等:c)将Dao/Mapper ...
- Go语言 之TCP文件传输
服务端实现流程大致如下: 创建监听listener,程序结束时关闭. 阻塞等待客户端连接,程序结束时关闭conn. 读取客户端发送文件名.保存fileName. 回发“ok”给客户端做应答 封装函数 ...