在我们平时写程序的过程中,用单个源文件把程序写出来的时候较少,一般都是分成多个头文件和源文件来完成的。这个时候如果我们仍想就通过vim工具来完成 我们的编译工作,那就要用到make。这里用个最简单的例子最简单地介绍写一个最简单的makefile的方法,在我们写一些很小的程序的时候可以就这 样。
这里就以两个文件的程序为例,把规则看明白后多的文件类推就可以了。
我们先用vim写好要写好的hello.h和hello.cpp:
//hello.h
#include<iostream>
using namespace std;
int ABC(int m,int n)
{
int i=m+n;
cout<<i<<endl;
}
//hello.cpp
#include<iostream>
#include "hello.h"
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
ABC(a,b);
}
然后写一个文件命名为Makefile或makefile,内容如下:
a:hello.o
g++ -o a hello.o
hello.o:hello.cpp hello.h
g++ -c hello.cpp
.PHONY:clean
clean:
rm a hello.o
其意思如下:
a:hello.o // 我们的目标文件是a,但a的生成依赖于hello.o
g++ -o a hello.o // 从hello.o生成a所要进行的动作
hello.o:hello.cpp hello.h // hello.o依赖于hello.cpp和hello.h
g++ -c hello.cpp // 生成hello.o所要进行的动作
.PHONY:clean // 伪目标clean
clean:
rm a hello.o // clean的动作
也就是说,我们的关键是要把目标文件、中间文件与源文件之间的依赖关系和要进行的动作写清楚。
把这几个文件在某目录下保存好以后,在这个目录下打开终端,
执行make
可以看到编译的步骤,
然后ls
如果没错误的话就可以看到目录下多了个a文件,
./a
输入两个整数,就会看到输出他们的和。
运行make clean可以清除a和hello.o
这只是最简单的例子,make是很强大很好用的工具,我们大家都相当有必要把它学好,详细的学习资料请见http://www.chinaunix.net/jh/23/408225.html。