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