makefile与make做了对文件的编译链接,我们只需要写一个makefile文件,执行make就会生成我们所需要的可执行文件,下面演示makefile的代码和操作:
例如:对 main.c add.c max.c 三个文件进行编译(注意: gcc 前面必须是 table 建缩进)
首先我们先看看main.c、add.c、max.c文件内容:
接下来完成makefile文件的操作:
1.关于makefile里的clean
注意最后一行故意写成了clear,make clear就可以删除当前路径下main文件以及.o文件,如果写成clean,执行make clean可达到相同的效果,在这里故意写成clear只是为了表明这个不是一定要固定的。
接下来看make前和make后的变化:
发现只要写好相对应的makefile文件,make+回车,就会自动生成.o文件和可执行文件。执行make clear之后,就会删除.o文件和可执行文件。
2.关于makefile文件的命名
关于makefile文件的名字,见下图:
发现,除了名字为makefile和 Makefile之外,其他名字执行make都会提示找不到makefile文件,所以makefile文件只能命名为makefile或者Makefile。
3.关于makefile里的语句
最后,我们谈谈makefile文件里的语句的意思。就拿我们写的makefile文件为例:
第一句all:main
意思是最后产生的可执行文件。
第二句main:add.o max.o main.o
意思是main依靠add.o、max.o、max.o文件产生
具体依靠语句为:gcc -o main main.o max.o add.o
第三句main.o:main.c
意思是main.o依靠main.c文件产生
具体依据方式为:gcc -c main.c
第四句和第五句与第三句效果一样
第六句是删除.o文件和main文件的意思 rm -r我们知道时删除文件的意思,加上f意思是删除错误不需要反馈。
可见,makefile里的每一句顺序不重要,只要将所有必须信息告诉makefile文件即可。知道每一句表达的意思后,再写makefile文件就比较好记。