Makefile的引入及规则
为什么要有Makefile
使用keil, mdk, avr等工具开发程序时点点鼠标就可以编译了,
它的内部机制是什么?它怎么组织管理程序?怎么决定编译哪一个文件?
这里使用 gcc 对 test1.c 和 test2.c 进行编译 汇编 链接(预处理系统默认执行),得到可执行文件test
gcc test1.c test2.c -o test
可以看到,此方法 简单,
但是会对所有文件都处理一次,
文件多时如果只修改其中一个文件会导致效率低,如果是几万个文件的非常庞大的工程,书写五分钟,编译俩小时
Makefile的核心规则 :
目标 : 依赖1 依赖2 …
[TAB]命令当"目标文件"不存在,
或
某个依赖文件比目标文件"新",
则: 执行"命令"
这里的 新 就是比较依赖文件和目标文件的生成时间。很显然,如果我们修改了一个文件,那么改文件相对于之前处理过的文件就会更新,这个时候就可以单单对这一个文件重新编译了,节省了大量时间,提高了效率,这就是Makefile的核心规则
编写Makefile
废话少说,直接开干
首先我们创建两个.c文件
分别命名为test1.c 和 test2.c
test1.c :
test2.c:
就定义一个变量就好了
然后编写Makefile如下
Makefile:
测试一下
以上内容参考了韦东山老师的文档,在此表示感谢