最近的项目有 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