標題: 在Windows下編譯ACE源碼包(VC) [打印本頁]

作者: 51黑tt    時間: 2016-3-5 19:54
標題: 在Windows下編譯ACE源碼包(VC)
  在Windows下編譯ACE源碼包(VC) 收藏
1. 安裝 Active Perl
    ACE許多實用程序是Perl寫成的,所以要安裝它。官方網(wǎng)站:www.activestate.com/activeperl/
  在跨平臺程序編寫過程中,需要接觸到多種工程文件,常見的工程文件有GNU Makefile,Visual C++,Borland Makefile等,生成和管理這些工程文件是一個很麻煩的事情。目前ACE/TAO采用一種中立的文本文件來進行描述,同時通過相關(guān)的文本處理程序來實現(xiàn)中立文件到具體的集成環(huán)境工程文件的轉(zhuǎn)換。下面是中間文件和一般集成環(huán)境的關(guān)系:MWC(Make Workspace Creator)生成Workspace File(Makefile, dsw, sln, etc) 。MPC(Make   Project   Creator)生成Project  File(Makefile, vcproj, dsp, etc) 。如果研究過ACE的源代碼中可以發(fā)現(xiàn)   $ACE_ROOT/bin 有幾個有意思的文件:
mwc.pl:通過分析mwc文件生成指定類型的工作空間文件
mpc.pl:通過讀取mpc文件生成指定類型的工程文件
2. 下載ACE
    官方網(wǎng)站:http://www.cs.wustl.edu/%7Eschmidt/ACE.html
    假設(shè)你把它的源代碼放在 D:\ACE_wrappers 目錄下。當(dāng)然你也可以放在別的地方。

3.設(shè)置環(huán)境變更
        $(ACE_ROOT) = D:\ACE_wrappers
    在$(PATH)中,增加$(ACE_ROOT)/lib

4.手工添加config.h
    config.h文件到$(ACE_ROOT)/ace下,config.h的內(nèi)容為:

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%,這是環(huán)境變量的表達方法。

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產(chǎn)生新的線程類   
#define ACE_USES_STATIC_MFC         1          //使用靜態(tài)連接MFC庫   
#define ACE_AS_STATIC_LIBS          1          //生成靜態(tài)的ACE庫   
#define ACE_NO_INLINE                   //在靜態(tài)庫內(nèi)禁止內(nèi)聯(lián)函數(shù)。  
#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產(chǎn)生新的線程類
#define ACE_USES_STATIC_MFC         1          //使用靜態(tài)連接MFC庫
#define ACE_AS_STATIC_LIBS          1          //生成靜態(tài)的ACE庫
#define ACE_NO_INLINE                   //在靜態(tài)庫內(nèi)禁止內(nèi)聯(lián)函數(shù)。

6.用MPC生成支持工程文件
    一般來說,要將mwc或者mpc生成vc6的工程文件(ace.sln以及ace.vcproj,或則ace.dsp以及ace.dsw)可以通過一下的方法來實現(xiàn):(1)cd 到你需要的文件路徑,(2)執(zhí)行下面的命令

view plaincopy to clipboardprint?
mwc.pl   -type   vc6  
  mwc.pl   -type   vc6

    -type參數(shù)是很重要的,選擇輸出的工程文件的所支持的格式。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   


    如果大家有興趣的化可以好好研究一下相關(guān)的mwc.pl以及mpc.pl的命令行參數(shù)
如果用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的文件包在,已經(jīng)默認了兩個項目配置, Debug和Release,MFC下的沒了,我們可以用MPC生成支持 MFC。


7. 編譯
    用生成的項目工程文件,編譯即可。






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1