为什么要使用make?
Make命令允许你管理大型程序或一组程序(groups of programs)。当你开始编写大型程序时,你会发现重编译(re-compiling)大型程序比小型程序花费更多的时间。另外也会注意到,你经常仅仅在一小部分程序上工作(例如你正在调试的一个函数),剩余的大部分程序保持不变。
make程序帮助你开发大型程序。它跟踪自上次编译之后,整个程序中发生变化的部分,并仅仅编译这些程序。
makefile又是干什么的?
makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了原始码如何编译的详细信息! makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
Makefile文件编写规范:
- 目标:依赖文件
- $^ 代表所有依赖文件
- $< 代表第一个依赖文件
- % 代表通配符
- @指令:屏蔽指令
- 定义变量(变量大写)
- 变量名=值1 值2 …
- 使用变量 $(变量名)
示例:
当我们有多个文件,最后想得到一个main文件时,
从上面图片可以看出我需要编译很多个文件,这样的话命令十分的长,我每次修改代码后都需要重新编译执行,就很复杂麻烦。所以需要makefile来帮助我们实现。下面是makefile的简单使用:
1,使用vim Makefile创建
2,进行编辑
1 APPNAME=tlv_server
2
3 CC=gcc
4
5 all:
6 ${CC} tlv.* -o ${APPNAME} $^ -lsqlite3
7
8 clean:
9 rm -rf ${APPNAME}
10
11
3.我们就可以看到目录下,已经创建好了可执行文件tlv—server
4.如果需要删除:
make工作流程
1、make会在当前目录下找名字叫”Makefile”或”makefile”的文件。
2、如果找到,它会找文件中的第一个目标文件(target)并把这个文件作为最终的目标文件
3、根据时间戳生成目标文件
4、递归去寻找目标文件依赖文件,并且递归生成(同样有时间戳问题)。
makefile 管理命令
-C dir 读入指定目录下面的makefile
-f file 读入当前目录下的file文件为makefile
-i 忽略所有命令执行错误
-I dir 指定被包含的makefile所在目录
总结: makefile的使用极大的提升了我们编译的效率,当然还有其他很多的用处,编写方法,本人学习到的有限,可以查看makefile详细的介绍学习