|
在Windows下編譯ACE源碼包(VC) 收藏
1. 安裝 Active Perl
ACE許多實用程序是Perl寫成的,所以要安裝它。官方網站:www.activestate.com/activeperl/
在跨平臺程序編寫過程中,需要接觸到多種工程文件,常見的工程文件有GNU Makefile,Visual C++,Borland Makefile等,生成和管理這些工程文件是一個很麻煩的事情。目前ACE/TAO采用一種中立的文本文件來進行描述,同時通過相關的文本處理程序來實現中立文件到具體的集成環境工程文件的轉換。下面是中間文件和一般集成環境的關系:MWC(Make Workspace Creator)生成Workspace File(Makefile, dsw, sln, etc) 。MPC(Make Project Creator)生成Project File(Makefile, vcproj, dsp, etc) 。如果研究過ACE的源代碼中可以發現 $ACE_ROOT/bin 有幾個有意思的文件:
mwc.pl:通過分析mwc文件生成指定類型的工作空間文件
mpc.pl:通過讀取mpc文件生成指定類型的工程文件
2. 下載ACE
官方網站:http://www.cs.wustl.edu/%7Eschmidt/ACE.html
假設你把它的源代碼放在 D:\ACE_wrappers 目錄下。當然你也可以放在別的地方。
3.設置環境變更
$(ACE_ROOT) = D:\ACE_wrappers
在$(PATH)中,增加$(ACE_ROOT)/lib
4.手工添加config.h
config.h文件到$(ACE_ROOT)/ace下,config.h的內容為:
view plaincopy to clipboardprint?
#include "ace/config-win32.h "
#include "ace/config-win32.h "
以說明是要在win32平臺下進行編譯。
注:(ACE_ROOT)/ace表示 d:/ACE_wrappers/ace,在windows的cmd box下可以這樣輸入 :
cd %ACE_ROOT%/ace。在Linux下是$(ACE_ROOT),在windows下是%ACE_ROOT%,這是環境變量的表達方法。
5.添加宏定義
作為可選項,你可以在ACE_ROOT\ace\config.h文件的#include語句前(注意:添加在 #include 之前)添加如下的宏定義:
view plaincopy to clipboardprint?
#define ACE_HAS_WINNT4 0 //OS不是NT4.0或以后版本
#define ACE_HAS_STANDARD_CPP_LIBRARY 1 //使用標準C++庫 MSVC的STL庫
#define ACE_HAS_MFC 1 //使用MFC庫
#define THR_USE_AFX 1 //使用CWinThread產生新的線程類
#define ACE_USES_STATIC_MFC 1 //使用靜態連接MFC庫
#define ACE_AS_STATIC_LIBS 1 //生成靜態的ACE庫
#define ACE_NO_INLINE //在靜態庫內禁止內聯函數。
#define ACE_HAS_WINNT4 0 //OS不是NT4.0或以后版本
#define ACE_HAS_STANDARD_CPP_LIBRARY 1 //使用標準C++庫 MSVC的STL庫
#define ACE_HAS_MFC 1 //使用MFC庫
#define THR_USE_AFX 1 //使用CWinThread產生新的線程類
#define ACE_USES_STATIC_MFC 1 //使用靜態連接MFC庫
#define ACE_AS_STATIC_LIBS 1 //生成靜態的ACE庫
#define ACE_NO_INLINE //在靜態庫內禁止內聯函數。
6.用MPC生成支持工程文件
一般來說,要將mwc或者mpc生成vc6的工程文件(ace.sln以及ace.vcproj,或則ace.dsp以及ace.dsw)可以通過一下的方法來實現:(1)cd 到你需要的文件路徑,(2)執行下面的命令
view plaincopy to clipboardprint?
mwc.pl -type vc6
mwc.pl -type vc6
-type參數是很重要的,選擇輸出的工程文件的所支持的格式。mwc/mpc支持的工程文件格式有:
view plaincopy to clipboardprint?
borland Borland Make
em3 embedded Visual C++ 3.00 and 4.00
gnuace GNU Make for ACE
nmake Microsoft NMake
vc6 Visual C++ 6.0
vc7 Visual C++ 7.0
borland Borland Make
em3 embedded Visual C++ 3.00 and 4.00
gnuace GNU Make for ACE
nmake Microsoft NMake
vc6 Visual C++ 6.0
vc7 Visual C++ 7.0
如果大家有興趣的化可以好好研究一下相關的mwc.pl以及mpc.pl的命令行參數
如果用vc6.0,還要注意VC的SP級別,最好是SP6。以下是生成 VC2005下的項目工程文件:
view plaincopy to clipboardprint?
perl %ACE_ROOT%/bin/mwc.pl -type vc8 -value_template "configurations = 'MFC Release ' 'MFC Debug ' Release Debug " -features mfc=1 %ACE_ROOT%/ace/ace.mwc
perl %ACE_ROOT%/bin/mwc.pl -type vc8 -value_template "configurations = 'MFC Release ' 'MFC Debug ' Release Debug " -features mfc=1 %ACE_ROOT%/ace/ace.mwc
ACE的文件包在,已經默認了兩個項目配置, Debug和Release,MFC下的沒了,我們可以用MPC生成支持 MFC。
7. 編譯
用生成的項目工程文件,編譯即可。
|
|