标题: 在Windows下编译ACE源码包(VC) [打印本页]

作者: 51黑tt    时间: 2016-3-5 19:54
标题: 在Windows下编译ACE源码包(VC)
  在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. 编译
    用生成的项目工程文件,编译即可。






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1