目录
- 1、什么是Makefile
- 2、Makefile文件命名和规则
- 3、工作原理
- 4、变量
- 5 模式匹配
- 6 函数
橙色
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上面再添加一行: