Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94928
  • 博文数量: 17
  • 博客积分: 1278
  • 博客等级: 中尉
  • 技术积分: 290
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-08 13:26
文章分类

全部博文(17)

文章存档

2011年(4)

2010年(7)

2009年(1)

2008年(5)

我的朋友

分类: LINUX

2008-10-02 15:35:25

 
 

对于一个精通makfile的编程老鸟来说,写一个makefile,添加ACE头文件目录和库文件目录是相当容易的事情。但是对于笔者这样的懒人,平时做项目都是直接拷贝的别的项目的makfile,也懒得去研究makefile的细节.(哈哈,忽然有些怀念VC这样的IDE)。ACE给我们做了很多事,同样也考虑到了懒人们,懒人们可以使用ACE安装包里自带的perl脚本来自动生成makefile,当然,你必须做的是定义一个mpc文件,然后用这个perl脚本来执行这个mpc文件。


    怎样定义一个mpc文件呢, 在$ACE_ROOT/tests目录下有一个tests.mpc,这是一个很好的参考例子,$ACE_ROOT/tests下的所有例程的makfile都是根据这个tests.mpc文件来生成的,把tests.mpc打开来研究一下,自己也能轻易的定义这种格式的文件了。这里举两个简单的例子,使用关键字exename来定义编译产生应用程序的makefile, 使用sharedname来定义编译产生库文件的makefile。


    先让我们来看一个典型的mpc文件


 

//project_name 工程的名称,可缺省

// baseproject mpc的模板,

//一般使用aceexe或者acelib模板,也可以自己定义模板
project(project_name) : baseproject,anotherbaseproject{
        exename = foo
//产生的可执行程序的名称

        includes += "."
//工程需要包括的头文件目录

        libpaths = directory
//工程需要包括的库文件目录


         Source_Files {
//工程的源文件

               file1.cpp
               file2.cpp
                   .
                   .
               fileN.cpp
          }

          Header_Files {
//工程的头文件

             file1.h
             file2.h
                    .
                    .
             fileN.h
         }
}

 

例1,编译应用程序


新建一个cpp文件hello_world.cpp;

#include “ace/Log_Msg.h”
int main(int argc, char*argv[])
{
    ACE_DEBUG((LM_DEBUG, “hello world!\n”));
    Return 0;
}

新建一个mpc文件hello_world.mpc;

project(Hello_World) : aceexe {
  exename = hello
  Source_Files {
    Hello_world.cpp
  }
}

执行命令: $ACE_ROOT/bin/mpc.pl -type make  hello_world.mpc;
产生一个后缀为Hello_World的makfile文件: Makefile.Hello_World;
编译: make –f Makefile.Hello_World
产生可执行程序hello

例2, 编译库文件


建立两个源文件如下:

/*file hello.h*/
#include “ace/Log_Msg.h”
void hello();

 

/*file hello.cpp*/
#include “hello.h”
void hello()
{
  ACE_DEBUG((LM_DEBUG, “hello world!\n”));
}

建立hello.mpc

project(hello dll) : acelib{
  sharedname = hello
  Source_Files {
    hello.cpp
  }
  Header_Files{
    hello.h
  }
}

安装例1的方式操作,会在$ACE_ROOT/lib下产生名为libhello.so的库文件。

通过mpc.pl产生的makefile文件,也可以根据需要加以修改,做成满足自己需要的模板,以后就一劳永逸了,哈哈

 
 
阅读(2437) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~