1、
所要完成的Makefile文件描述了整个工程的编译、连接等规则,其中包括:工程中的哪些源文件需要编译及如何编译、需要创建哪些库文件及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的Makefile,编译整个工程你所要做的唯一的一件事就是在shell提示符下输入make命令,整个工程完全自动编译,极大提高了效率。
2、
Maven、ANT、Gradle是构建工具
Makefile构建工具,只需通过make一句命令就可以构建一个可执行程序
3、
在很多C/C++开源项目中,configure文件用来检查系统配置生成配置文件(这些配置文件会在接下来的Makefile文件中被使用到)。
Makefile文件用来生成我们需要的动态库文件
4、为什么要写Makefile文件?
(1)当项目非常庞大时,让构建过程,自动化,简单化
(2)依赖文件比目标更新,会重建目标文件
5、makefile三要素
(1)目标
(2)依赖
(3)命令
(1)
(2)
也可以使用通配符进行替换
6、清空 .o文件
7、
直接make,构建的是终极目标
构建非终极目标,make main.o
8、递归展开式
9、展开式
(1)控制台不会输出任何东西
(2)控制台会输出android,且该值是固定的,不能随时改变
必须引用定义好了的变量,定义之后就会展开
10、变量的追加
11、
调用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 编译需要的动态库