makeFile文件编写初探!!

来源:互联网 发布:java打印九九乘法表 编辑:程序博客网 时间:2024/06/11 05:17

有三个文件:

file1:stutemp.cpp

#include <iostream.h>

#include "sayhai.h"

int main()

{

  Person s;

  s.printName();

        return 0;

}

 

file2:sayhai.h

#ifndef SAYHAI_H

#define SAYHAI_h

class Person

{

  public:

    Person();

    void printArr();

  private:

    void printArray(int);

    int  saleValue[4];

};

#endif

 

file3:sayhai.cpp

#include <iostream.h>

#include "sayhai.h"

Person::Person()

{

  for( int i = 0 ; i < 4 ; i++ )

   {

    saleValue[i]=0;

    printArray(i);

   }  

}
void Person::printArr()

{

  cout << " test ok!" << endl;

} 

void Person::printArray(int x)

{

  cout << " saleValue[ "  << x << " ] = " << saleValue[x];

}

 

 

从上面的结构可以看出,主文件,调用了头文件的接口来实现打印功能,而接口头文件再去找他的实现类;现在的问题是,我们怎么样来方便的编译这个程序;常见的办法是:

g++ -c stutemp.cpp

g++ -c sayhai.cpp

g++ -o stutemp stutemp.o sayhai.o

 

这是对于一个调用和关联得比较少的程序,我们可以使用这种手动的办法来进行编译。那么如果是项目比较大,调用关系比较复杂的时候,我们又该怎么样来处理呢?而且,当我们要修改程序中的某一段的时候,整个程序的其它文件都需要重新编译一次,这样又如何来处理呢?

 

在这里,LINUX给我们提供了一个很好的工具组合:那就是MAKE工具,make是linux自带的,使用make时,需要我们编写自己的makefile文件。现在就来说一下这个文件要怎么样来写。在这里我使用的这下面的办法。我的makefile的内容如下:

 #MakeFile

stutemp:stutemp.o sayhai.o

  g++ -c $@ $^

stutemp.o:stutemp.cpp sayhai.h

  g++ -c $<

sayhai.o:sayhai.cpp  sayhai.h

  g++ -c $<

 

以后,我们修改任何一个程序的时候,都只需要执行一下make命令就可以了!!!

 

现在简单的说一下上面的这段MakeFile文件的内容吧:

第一行表示的是依赖关系.第二行是规则.
比如说我们上面的那个Makefile 文件的第二行
stutemp:stutemp.o sayhai.o

表示我们的目标(target)stutemp的依赖对象(components)是sayhai.o sayhai.o

Makefile 有三个非常有用的变量.分别是$@ ,  $^  , $<  代表的意义分别是:
$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.

 

OK,先写到这里吧,以后再分享!!

0 0
原创粉丝点击