一.什么是make和makefile
makefile作用:
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
make作用:
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法
注意点:
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建
下面是我简单写的一个makefile文件:
通过该文件就可以实现一些便捷的命令工具。
二.make和makefile的使用与介绍
我们先试用前面的makefile中指令,再详细讲解makefile的内部知识!
1.直接make就是我们的gcc指令:
2.make+clean是我们的第二个清理指令:
现在我们再来学习内部知识:
图中第一行:
mytest1是生成的目标文件
test1.c是依赖文件列表
注意:可以多个,也可以为空
第二行:
该行是命令行,表示依赖方法,可以写多行
第三行:
表示对应的clean总是执行
所以我们可以得出:
.PHONY:XXX 表示为对应的XXX总是执行,不会出现限制
补充知识:
makefile对最新生成的内容不会再次执行!!!
例如下图:
这也是.PHONY的作用之处。
三.make和makefile的深入学习
1.替换
我们在写文件名的时候可能会觉得麻烦,所以我们可以认识以下两种替换来帮助我们便捷使用:
$---表示要执行操作符
@:表示目标文件
^:表示依赖文件列表
当我们将makefile做出以下修改时,也可以执行命令行,且执行时会自动将符号转换为文件
如下:
除了用符号来改写外,我们还可以用变量来改写:
该操作也是可以的,注意加括号即可!!!
我们再来联系我们编译和链接等操作来使用特殊的makefile:
看图:
我们可以分开进行编译链接等操作,最后得出结果
形成不同所需文件:
注意点:
如果你仔细观察会发现我们写的顺序是不符合从上到下的过程的,但是却可以执行,这是因为其可以自动推导,即自动查找:如现在对test1.o操作却没该文件,就会去后面找在返回来操作,类似递归,但是我们的第一行不能改变,其他顺序可变!!!
补充:
如果你不想每次都看执行的命令是什么,可以在前面加@
例如:
这样就不会显示执行的操作内容了。
这就是这部分的内容了,感谢大家的阅读!!!