最近的項(xiàng)目有
windows
和
solaris
兩個版本。其中
windows
下用的編譯器是
visual studio 2005
,
Solaris
下的是
CC
。我們現(xiàn)在的方案是先在
visual studio 2005
下測試通過。然后使用
MPC
:
Make Project Creator
生成
vcproj
和
solaris
下的
makefile
文件。最后再對這兩個工程文件進(jìn)行測試。
MPC
是一個開源項(xiàng)目,采用
perl
語言編寫。使用
MPC
只需寫一次
mpc
文件即可非常容易的生成
vcproj(
支持
vc6 – vc9)
文件和
makefile
、語法也不復(fù)雜。
ACE
的工程文件就是用的這個東西。十分適合跨平臺的項(xiàng)目。
MPC
使用
在工程根目錄下創(chuàng)建
MPC/config/MPC.cfg
文件,文件內(nèi)容為:
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
為頭文件包含的路徑。
還有l(wèi)ibout(lib文件輸出路徑), dllout(動態(tài)鏈接庫輸出路徑), sharedname(動態(tài)鏈接庫名稱)
Mpb
文件主要是用來描述一些公共的信息
(
如公共頭文件,動態(tài)庫
)
,如:
Project {
?????? Includes += ../../include/common
?????? Libpaths+=”../../lib”
}
完成上面文件之后,輸入命令:
mwc.pl
即可生成工程文件
注意:在路徑中切不可包含空格
mwc.pl -static 生成靜態(tài)庫
在MPC文件中可以加上 avoids += shared
這樣就能避免生成動態(tài)的工程了(exe或dll)
MPC使用介紹
?
MPC是ACE中附帶的一個很有用的Makefile工具,簡單的說MPC可以通過一個單一的定義文件,生成各種開發(fā)環(huán)境需要的Makefile,VC工程文件,并且可以通過自行擴(kuò)展適合各種開發(fā)環(huán)境需要的工程文件。
編寫一個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之間的依賴關(guān)系,詳細(xì)的語法可以參考后面提供的參考資料。
生成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的靜態(tài)和動態(tài)庫工程文件,并且通過工程名稱予以區(qū)別
$ACE_ROOT/bin/mwc.pl -type vc9 -ti lib:vc9lib -name_modifier *_lib_vc9 hello.mwc