makefile
- 1 快速使用
- 1.1 认识makefile
- 1.2 使用makefile
- 2 深入理解
- 理解 **依赖关系 与 依赖方法**
- 如何实现源代码修改了才会重新编译
- 3 内置符号理解
- Thanks♪(・ω・)ノ谢谢阅读!!!
- 下一篇文章见!!!
1 快速使用
- 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
- 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
- makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
- make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
- make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建
1.1 认识makefile
makefile 可以实现自动化构建代码工程
首先 来认识一下make makefile
1.2 使用makefile
我们首先编写一个简单的makefile文件
我们使用make
命令来执行
然后我们就成果得到了可执行程序mytest
,并可以成功执行。
再通过使用make clean
命令 可以成功删除清理mytest
.
2 深入理解
我们先以前两行讲解:
- 依赖方法前必须使用
TAB
进行开头,不能使用4个空格 make
命令会读取makefile的内容,完成编译/清理工作。- 依赖文件列表可以为空
- makefile 从上向下扫描 默认生成第一个目标文件(一般把可执行程序放在开头)
这里 发现 连续两次make 不能成功,但是加上.PHONY 或 源代码更新就可以。
6. .PHONY : XXX 修饰 XXX表示总是被执行(不断make就可以实现了)
理解 依赖关系 与 依赖方法
通过一个故事理解:
月末了,在上大学的小明没有钱了,所以他拨通了那个男人的电话说:爸! 我是你儿子。 这就是表明依赖关系
而此时在爸爸这边只听到了爸! 我是你儿子
,爸爸非常不理解,你是我儿子咋了?爸爸并不知道小明的需求。所以只表明依赖关系是不够的。
小明也认识到了这点,他再次打了回去:爸! 我是你儿子。我没钱了,给我打点钱。
此时前一句 是表明依赖关系,后一句表明依赖方法,完整表达了意思。
如何实现源代码修改了才会重新编译
只有源代码的“修改时间” 比 可执行程序 的“修改时间”新 ,才会重新编译。
3 内置符号理解
$@ 表明 目标文件
$^ 表明 依赖文件列表
$< 代表第一个依赖文件
类似C语言的宏定义,make 时会自动替换
这样可以递归实现编译的全过程。层层嵌套
使用变量: