最近的项目有 windows 和 solaris 两个版本。其中 windows 下用的编译器是 visual studio 2005 ,

Solaris 下的是 CC 。我们现在的方案是先在 visual studio 2005 下测试通过。然后使用 MPC :

Make Project Creator 生成 vcproj 和 solaris 下的 makefile 文件。最后再对这两个工程文件进行测试。

MPC 是一个开源项目,采用 perl 语言编写。使用 MPC 只需写一次 mpc 文件即可非常容易的生成 vcproj( 支持 vc6 – vc9) 文件和 makefile 、语法也不复杂。 ACE 的工程文件就是用的这个东西。十分适合跨平台的项目。

MPC 使用

在工程根目录下创建 MPC/config/MPC.cfg 文件,文件内容为:

Default_type=make

Dynamic_type=$Test_root/bin/mpcfile,/home/test/MPC

Logging=info=1 warn=1

Verbose_ordering=1

第 1 行注明了生成工程文件的类型,在这里是 makefile

第 2 行引用了两个地方的 project 定义 ( 即 MPC 文件 ) ,有了这一行,则工程文件中任意位置的 mpc 文件都可以引用上面两个地方 ( 包含子目录 ) 的 mpc 或 mpb 文件了。

mpc 文件是可以继承的。示例如下:

project(mod1):modob{

       exename=”mod1”

       exeout=”../../bin”

       includes+=”../../include/mod1”

      

       Source_Files{

              *.cpp

       }

       Header_Files{

              *.h

       }

}

其中 exename 为生成文件的名称, exeout 为生成的文件的路径, includes 为头文件包含的路径。

还有libout(lib文件输出路径), dllout(动态链接库输出路径), sharedname(动态链接库名称)

Mpb 文件主要是用来描述一些公共的信息 ( 如公共头文件,动态库 ) ,如:

Project {

       Includes += ../../include/common

       Libpaths+=”../../lib”

}

完成上面文件之后,输入命令: mwc.pl 即可生成工程文件

注意:在路径中切不可包含空格

mwc.pl -static 生成静态库

在MPC文件中可以加上 avoids += shared

这样就能避免生成动态的工程了(exe或dll)


MPC使用介绍

 
MPC是ACE中附带的一个很有用的Makefile工具,简单的说MPC可以通过一个单一的定义文件,生成各种开发环境需要的Makefile,VC工程文件,并且可以通过自行扩展适合各种开发环境需要的工程文件。

编写一个MWC和MPC文件

hello.mwc例子

						// -*- MPC -*-
workspace {
  hello.mpc}

hello.mpc例子

						// -*- MPC -*-
project(hello):aceexe, acexml, avoids_ace_for_tao {
  exename = hello
  avoids += uses_wchar
 
  Source_Files {
    hello.cpp}}

mwc可以看作是workspace定义,mpc可以看作是project定义,一个workspace可以包含多个project,并且可以定义多个project之间的依赖关系,详细的语法可以参考后面提供的参考资料。

生成Makefile

生成Makefile

$ACE_ROOT/bin/mwc.pl -type make hello.mwc

生成VC2008工程文件

$ACE_ROOT/bin/mwc.pl -type vc9 hello.mwc

同时生成多个工程文件

$ACE_ROOT/bin/mwc.pl -type make -type vc9 hello.mwc

同时生成vc9的静态和动态库工程文件,并且通过工程名称予以区别

$ACE_ROOT/bin/mwc.pl -type vc9 -ti lib:vc9lib -name_modifier *_lib_vc9 hello.mwc