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