Makefile

163 阅读1分钟

1、什么是Makefile

在这里插入图片描述

2、Makefile文件命名和规则

在这里插入图片描述

可以看到,lession07目录下有如下的几个文件,我在该目录下先创建Makefile目录,并在其中写入如下图的语句 在这里插入图片描述 在这里插入图片描述

保存后返回,并输入make指令,可以看到,就自动执行了命令并生成了可执行文件app

上面的这个makefile也可以这样写:

在这里插入图片描述

这样也能达到同样的效果,虽然更麻烦,但效率更高。试想你改变了add.c文件中的内容,如果你采用该图内的指令来生成可执行文件的话,那么add.c、sub.c、div.c、mult.c四个文件都要重新编译一遍。 在这里插入图片描述

如果你采用下面这张图的话,则仅仅需要把add.c重新编译一遍即可,无疑可以提升效率。 在这里插入图片描述

3、工作原理

在这里插入图片描述

4、变量

在这里插入图片描述

根据上图,可以把之前的代码简化如下: 在这里插入图片描述

5 模式匹配

在这里插入图片描述

根据上图,也可以再次简化代码: 在这里插入图片描述

6 函数

示例中,可以返回当前目录下的所有后缀名为.c的文件和当前文件下的sub目录下的所有后缀名为.c的文件。 在这里插入图片描述

下图的这个示例就很清楚了 在这里插入图片描述

src变量的值为第二行的内容,objs变量的值则是add.o、sub.o、main.o、mult.o、div.o 在这里插入图片描述

同样是可以正常执行的

最后还可以加入一条规则,把所有生成的.o文件全部删掉。你可以通过make把整个文件夹执行一遍,也可以通过make clean单独执行makefile文件里的clean函数。 在这里插入图片描述

但因为clean没有依赖,所以目标总是比依赖更新。所以当同一目录下存在了一个clean文件夹时,就没办法调用clean了,所以要在clean上面再添加一行: 在这里插入图片描述 在这里插入图片描述