linux的make和makefile

一.什么是make和makefile

makefile作用:

一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
 

make作用:

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法
 

注意点:

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建
 

下面是我简单写的一个makefile文件:

linux的make和makefile_第1张图片

通过该文件就可以实现一些便捷的命令工具。

二.make和makefile的使用与介绍

我们先试用前面的makefile中指令,再详细讲解makefile的内部知识!

1.直接make就是我们的gcc指令:

linux的make和makefile_第2张图片

2.make+clean是我们的第二个清理指令:

linux的make和makefile_第3张图片

现在我们再来学习内部知识:

linux的make和makefile_第4张图片

图中第一行:

mytest1是生成的目标文件

test1.c是依赖文件列表

注意:可以多个,也可以为空

第二行:

该行是命令行,表示依赖方法,可以写多行

第三行:

表示对应的clean总是执行
所以我们可以得出:

.PHONY:XXX        表示为对应的XXX总是执行,不会出现限制

补充知识:

makefile对最新生成的内容不会再次执行!!!

例如下图:

linux的make和makefile_第5张图片

这也是.PHONY的作用之处。

三.make和makefile的深入学习

1.替换

我们在写文件名的时候可能会觉得麻烦,所以我们可以认识以下两种替换来帮助我们便捷使用:

$---表示要执行操作符

@:表示目标文件

^:表示依赖文件列表

linux的make和makefile_第6张图片

当我们将makefile做出以下修改时,也可以执行命令行,且执行时会自动将符号转换为文件

如下:

除了用符号来改写外,我们还可以用变量来改写:

linux的make和makefile_第7张图片

该操作也是可以的,注意加括号即可!!!

我们再来联系我们编译和链接等操作来使用特殊的makefile:

看图:

linux的make和makefile_第8张图片

我们可以分开进行编译链接等操作,最后得出结果

linux的make和makefile_第9张图片

形成不同所需文件:

linux的make和makefile_第10张图片

注意点:

如果你仔细观察会发现我们写的顺序是不符合从上到下的过程的,但是却可以执行,这是因为其可以自动推导,即自动查找:如现在对test1.o操作却没该文件,就会去后面找在返回来操作,类似递归,但是我们的第一行不能改变,其他顺序可变!!!

补充:

如果你不想每次都看执行的命令是什么,可以在前面加@

例如:

linux的make和makefile_第11张图片

linux的make和makefile_第12张图片

这样就不会显示执行的操作内容了。

这就是这部分的内容了,感谢大家的阅读!!!

你可能感兴趣的:(linux,运维,服务器)