最近的項(xiàng)目有 windows solaris 兩個(gè)版本。其中 windows 下用的編譯器是 visual studio 2005

Solaris 下的是 CC 。我們現(xiàn)在的方案是先在 visual studio 2005 下測(cè)試通過(guò)。然后使用 MPC

Make Project Creator 生成 vcproj solaris 下的 makefile 文件。最后再對(duì)這兩個(gè)工程文件進(jìn)行測(cè)試。

MPC 是一個(gè)開(kāi)源項(xiàng)目,采用 perl 語(yǔ)言編寫(xiě)。使用 MPC 只需寫(xiě)一次 mpc 文件即可非常容易的生成 vcproj( 支持 vc6 – vc9) 文件和 makefile 、語(yǔ)法也不復(fù)雜。 ACE 的工程文件就是用的這個(gè)東西。十分適合跨平臺(tái)的項(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 行引用了兩個(gè)地方的 project 定義 ( MPC 文件 ) ,有了這一行,則工程文件中任意位置的 mpc 文件都可以引用上面兩個(gè)地方 ( 包含子目錄 ) 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(動(dòng)態(tài)鏈接庫(kù)輸出路徑), sharedname(動(dòng)態(tài)鏈接庫(kù)名稱)

Mpb 文件主要是用來(lái)描述一些公共的信息 ( 如公共頭文件,動(dòng)態(tài)庫(kù) ) ,如:

Project {

?????? Includes += ../../include/common

?????? Libpaths+=”../../lib”

}

完成上面文件之后,輸入命令: mwc.pl 即可生成工程文件

注意:在路徑中切不可包含空格

mwc.pl -static 生成靜態(tài)庫(kù)

在MPC文件中可以加上 avoids += shared

這樣就能避免生成動(dòng)態(tài)的工程了(exe或dll)


MPC使用介紹

?
MPC是ACE中附帶的一個(gè)很有用的Makefile工具,簡(jiǎn)單的說(shuō)MPC可以通過(guò)一個(gè)單一的定義文件,生成各種開(kāi)發(fā)環(huán)境需要的Makefile,VC工程文件,并且可以通過(guò)自行擴(kuò)展適合各種開(kāi)發(fā)環(huán)境需要的工程文件。

編寫(xiě)一個(gè)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定義,一個(gè)workspace可以包含多個(gè)project,并且可以定義多個(gè)project之間的依賴關(guān)系,詳細(xì)的語(yǔ)法可以參考后面提供的參考資料。

生成Makefile

生成Makefile

$ACE_ROOT/bin/mwc.pl -type make hello.mwc

生成VC2008工程文件

$ACE_ROOT/bin/mwc.pl -type vc9 hello.mwc

同時(shí)生成多個(gè)工程文件

$ACE_ROOT/bin/mwc.pl -type make -type vc9 hello.mwc

同時(shí)生成vc9的靜態(tài)和動(dòng)態(tài)庫(kù)工程文件,并且通過(guò)工程名稱予以區(qū)別

$ACE_ROOT/bin/mwc.pl -type vc9 -ti lib:vc9lib -name_modifier *_lib_vc9 hello.mwc