跨平台的软件构件MPC软件介绍

通过2个帖子来学习

//////////////////////////////首先建立一个 fun.mpc(假设你的工程名叫fun)的文件

内容为:

// -*- MPC -*-
// $Id: bin.mpc 80826 2010-06-20 14:51:23Z wotte $

project(fun): aceexe {
exename = fun
libpaths += "/usr/local/ACE/lib/"
Source_Files{
fun.cpp
}
}

然后执行命令:$ACE_ROOT/bin/mpc.pl -type make *mpc 会产生一个名为:Makefile.fun的文件

到这里已经完成一大半了。

把$ACE_ROOT/bin/GNUmakefile拷贝到当前目录下。

修改内容为

MAKEFILE = Makefile

ifeq ($(findstring k,$(MAKEFLAGS)),k)
KEEP_GOING = -
endif

include $(ACE_ROOT)/include/makeinclude/macros.GNU

all: fun

REMAINING_TARGETS := $(filter-out all,$(TARGETS_NESTED:.nested=)) $(CUSTO_TARGETS)

$(REMAINING_TARGETS):
$(KEEP_GOING)@$(MAKE) -f Makefile.fun $(@)

.PHONY: fun
fun:
$(KEEP_GOING)@$(MAKE) -f Makefile.fun all

project_name_list:
@echo fun



其实就是把里面的makefile.fun、fun更新到里面。

完成了,执行make就可以了。

////////////////////////// //////////////////////////////////

 

 

对于一个精通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文件,也可以根据需要加以修改,做成满足自己需要的模板,以后就一劳永逸了,哈哈。

MPC使用说明:http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/MPC/docs/USAGE

//////////////////////////

你可能感兴趣的:(跨平台的软件构件MPC软件介绍)