Makefile了解Android.mk
来源:互联网 发布:淘宝香港代购好的店铺 编辑:程序博客网 时间:2024/06/06 09:27
Maven、ANT、Gradle构建工具
Makefile 构建工具,只需通过make一句命令就可以构建一个可执行程序
为什么要写Makefile文件?
1.当项目非常庞大时,让构建过程,自动化,简单
2.依赖文件比目标更新,会重建目标文件
gcc编译工具,类似于javac
gcc -c a.c把a.c编译成目标文件a.o
#三要素#目标,依赖,命令#myapp目标(最终目标,第一行是最终目标)#:后的文件,这些都是依赖#命令TAB键开头,不能用四个空格代替,如何由依赖文件得到目标#step 1#myapp:main.o plus.o minus.o multi.o divi.o# gcc main.o plus.o minus.o multi.o divi.o -o myapp#目标:main.o#依赖:main.c#命令:gcc -c main.c#main.o:main.c# gcc -c main.c#plus.o:plus.c# gcc -c plus.c#minus.o:minus.c# gcc -c minus.c#multi.o:multi.c# gcc -c multi.c#divi.o:divi.c# gcc -c divi.c#step 2#变量#OBJECTS=main.o plus.o minus.o multi.o divi.o#step 3#wildcard所有当前目录下.c源文件SOURCES=$(wildcard *.c)#把.c后缀,替换成.o后缀OBJECTS=$(patsubst %.c,%.o,$(SOURCES))myapp:$(OBJECTS)#自动化变量 $^表示所有依赖,$@表示目标 gcc $^ -o $@#通配符#main.o:main.c%.o:%.c#gcc -c main.c -o main.o gcc -c $^ -o $@#没有依赖#clean清除所有的.o中间文件#伪目标保证了在当前文件夹有clen文件不会报错.PHONY:cleanclean: rm -f *.o rm -f myapp#递归展开式#可以引用还没有定义的变量,展开是引用时展开,可以先引用后定义str2=$(str1)str1=hello#直接展开式#必须引用定义好了的变量,定义之后就会展开,先定义后引用str3 := androidstr4 := $(str3)str5 := $(str1) world#变量的值追加str5 += hello#自定义函数myfun=$2 $1#变量等于函数的执行结构myfun_ret=$(call myfun,20,10)#@echo 不加@执行make test时会输出echo 。。。加上@只会输出后面的结果而不输出echotest: @echo $(SOURCES) @echo $(OBJECTS) @echo $(str2) @echo $(str4) @echo $(str5) @echo $(myfun_ret) @echo $(call myfun,30,40)
plus.c
minus.c
multi.c
divi.c
main.c
.c -> .o目标文件
.o -> 打包myapp,可执行文件
直接make,构建的是终极目标
构建非终极目标,make main.o
调用my-dir函数,返回Android.mk文件所在的目录
LOCAL_PATH := $(call my-dir) 放在第一行,地址当前所在目录
include file Makefile可以引入其他的Makefile文件
include $(CLEAR_VARS) 编译模块时,清空LOCAL_MODULE等参数
LOCAL_MODULE 模块名称
LOCAL_SRC_FILES 编译需要的源文件
LOCAL_C_INCLUDES 需要的头文件
LOCAL_SHARED_LIBRARIES 编译需要的动态库
阅读全文
0 0
- Makefile了解Android.mk
- Makefile & Android.mk文件
- android makefile(android.mk)分析
- Android makefile写法(Android.mk)
- android Makefile(Android.mk)解析
- android的makefile -- Android.mk
- android makefile(adroid.mk)分析
- 把android.mk 变成 Makefile
- android makefile(adroid.mk)分析
- Android.mk和GNU Makefile
- android Makefile and main.mk
- android makefile(android.mk)分析(序)
- android makefile(android.mk)分析(1)
- android makefile(android.mk)分析(2)
- android makefile(android.mk)分析(序)
- android makefile(android.mk)分析(序)
- android makefile(android.mk)分析(1)
- android makefile(android.mk)分析(2)
- 实现智能家居必不可少的五种无线通讯技术
- 笔记-java线程基础
- 测试主机的信息
- 在C++ 程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?
- 如何随机打乱DataFrame
- Makefile了解Android.mk
- sas数据直接相加空值对结果的影响及解决办法
- windows CMD 命令
- 好吧,左小波出山了!
- 网络管理
- 基于ZXing二维码实现(示例一)
- 修改密码 的测试用例(web)
- LSoft.Active.Disk.Image.v4.0.1.
- 订餐管理系统详解