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