网上搜了很多“makefile”的教程,都是非常详细的长篇,看的晕乎乎的,估计不磕个几天是学不到什么的。所以我还是写一个简单的笔记,适合初学者
另外介绍一个详细的网站 跟我一起写Makefile
target ... : prerequisites ...
command
...
...
这是基本的句式】。
target是目标文件(可以是可执行文件,可以是标签)
prerequisites是生成目标文件所需要的文件或者目标
command是命令,也就是shell命令(shell是一种脚本语言,可以简单看下教程,如果有其他语言基础,那学起来很快)
好了,有了上面的基础我们就可以开始尝试makefile了:
先写三个基本的文件:main.cpp classA.cpp classA.h
基本内容:classA是一个简单的类,然后在main中调用这个类,具体代码和在vs中一样,所以就不详细帖出来了。
直接上makefile代码(文件取名为makefile):
edit : main.o classA.o
g++ -o edit main.o classA.o
main.o : main.cpp classA.h
g++ -c main.cpp
classA.o : classA.cpp classA.h
g++ -c classA.cpp
clean :
rm main.o classA.o
直接在终端的相应目录下输入make即可看到结果,当然也不一定取名为makefile,但是要执行就要用:make -f filename
刚一看还是有点迷糊的,我来简单分析一下(新人目光,不负责对错):
1. edit是一个标签,不会生成这个文件,我觉得应该是个将几个.o生成最后的可执行文件的一个过渡
后面有两个.o文件,说明了其有依赖性
下一段是一句shell命令,目的是将两个.o生成最后的可执行文件finsh.out
2. main.o 后跟着main.cpp和classA.h,说明生成main.o依赖于这两个文件
紧跟着是一句shell命令,目的是编译生成main.o,也就是上一步需要的文件
3. 与上一步一样
4. clean,这句与上面的不同,从下面的命令可以看出这句的作用是删除这几个文件,我们可以这样调用make clean
这样几步差不多就学会了如何编译链接简单的工程,当然makefile还有很多高端的东西~慢慢学吧