一文教你学会Makefile脚本的简单应用

一.什么是Makefile脚本

Makefile其实就是一种脚本语言,跟python脚本一样,方便你程序的开发。当我们编译的文件过多,而又需要经常编译的时候就需要写Makefile脚本语言。或者方便别人去编译你的程序(其他人不知道如何编译),拿到你的Makefile文件后,只需要make一下,程序就编译出来了。

二.Makefile语法

Makefile包含一系列规则。如下
目标(target):依赖(prerequiries)
tab键+命令
它是如何执行的呢,当依赖文件发生改变的时候就会执行命令!这样说可能有点抽象,那么举个例子。
左边main.c文件,右边Makefile文件。
在这里插入图片描述
我们先make一下,看看发生什么。
在这里插入图片描述
make 之后就生成了main可执行文件。现在解释一下上诉的Makefile语法。目标,依赖,命令之间的关系,当依赖文件发生改变时,就会执行命令,重新生成依赖。所以我们上述脚本就是当main.c发生改变时,make一下就能重新生成main可执行文件。那么如果我再make一下会发生什么呢?
在这里插入图片描述
可以看到因为main.c文件没有改变,所以make一下并没有效果。你们可以去试一下改变main.c文件再去执行一下make。看看是不是重新生成了main可执行文件。

三.使用Makefile编译多个文件

我们先创建3个文件 1.c, 2.c ,3.c 和一个Makefile文件
在这里插入图片描述
然后编写Makefile脚本
![在这里插入图片描述](https://img-blog.csdnimg.cn/21ad4c05a1624cd4bb5313f5298162b9.png

我们先生成.o文件(目标文件),最后再进行链接成可执行文件,这样做有什么好处了,就是当一个.c文件发生改变时,其他文件只需要执行最后一步链接成main可执行文件,而不需要重新生成.o目标文件。在这个实验中区别不到,如果是比较大的项目,可能就几千上万个.c文件(比如linux内核源码),这样就大大提高了效率。

3.1 运行脚本

注意:我们这里只是测试,并没有写1.c ,2.c, 3.c 里面的内容。现在我们make一下
在这里插入图片描述

可以看到执行了以下语句,符合我们的预期。

3.2 利用Makefile删除不必要文件

我们只想生成main可执行文件,但是生成了很多不必要中间文件(1.o,2.o,3.o)。我们此时可以使用一个Makefile语法删除掉不需要的文件。
在这里插入图片描述
修改Makefile 文件
在这里插入图片描述
然后执行make clear,发现执行了 rm 1.o 2.o 3.o
在这里插入图片描述
注意:这里.PHONY:是固定的,clear:可以换成其他如XX: 最后执行make XX即可。

四.Makefile进阶语法

前面几个语法只是Make执行规则,下面提几个进阶语法,基本就能看懂别人写好的Makefile脚本了

4.1在Makefile中使用变量

如在上面实例中,1.o,2.o,2.o使用了三次,这里我们可以用变量替代,减少工作量(如调大型脚本调用多次的时候)下面是示例。
我们使用变量object(随便命名即可)来保存值,最后$(object)就能取到值。
在这里插入图片描述
我们make一下,发现效果一样。
在这里插入图片描述

4.2 Makefile中通配符

如 *.o代码当前目录下所有后缀为.o的文件.Makefile也可以修改为这样。
在这里插入图片描述

五.总结

本文就讲这么多了,只涉及一点基础,适合小白,如果需要深入了解Makefile,博主推荐去看《跟我一起学Makefile》这本书!!!。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VersionGod

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值