分类: WINDOWS
2012-05-29 13:55:01
1、从官网下载最新的版本,地址是: ,本实验系统下载的版本是ACE+TAO-5.6.7.zip,在windows XP操作系统上,使用VS2008进行编译。
2、解压下载的ACE+TAO-5.6.7.zip,本实验系统放在E盘上,即E:/ACE_wrappers。在该文件夹下,有ace的安装向导文件ACE-INSTALL.html在E:/ACE_wrappers/TAO文件夹下有TAO的安装向导文件TAO-INSTALL.html。
3、设置环境变量:
3.1、在“我的电脑”属性中找到“高级”选项下的环境变量设置按钮,开始进行设置。
本实验系统设置如下两个变量:
ACE_ROOT E:/ACE_wrappers
TAO_Root E:/ACE_wrappers/TAO
3.2、为了便于今后使用ACE/TAO,应当将%ACE_ROOT%/bin(部分通用工具的输出目录)
%ACE_ROOT%/lib(所有.lib、.dll文件的输出目录)添加到PATH环境变量中。
4、在%ACE_ROOT%/ace目录下添加一个文件config.h,并在其中添加如下内容:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#define ACE_HAS_MFC 1
#include "ace/config-win32.h"
具体方法见ACE Installation Guide,这里是一部分解释:
4.1、#include "ace/config-win32.h"
以说明是要在win32平台下进行编译。
注: #include "config-win32.h"亦可
4.2、如果是98/ME,则在ACE_ROOT/ace/config.h的最前面加上
#define ACE_HAS_WINNT4 0
来关掉一些NT/2000中特有的代码。
4.3、如果你想用MSVC的STL库 (如iostream, cstdio等), 则在config.h文件
中的#include语句前添加下面的行:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
注: 推荐使用该编译开关. 否则对新手而言, 在自己的工程中使用MSVC的STL库时会有一些小麻烦.
4.4、如果在ACE中要使用MFC的库,则需要在config.h中添加:
#define ACE_HAS_MFC 1
4.5、在默认情况下,所有的ACE工程使用的是MSVC的DLL文件作为运行时库。你可以选择使用ACE的静态库文件(LIB)而不需考虑这些运行时库。选择动态链接的原因是所有的NT都会包含这些dll文件(节省空间). 如果你想使用MFC的静态库版本,则需要在config.h中加入以下的宏定义:
#define ACE_USES_STATIC_MFC 1
你也可以全部使用静态库,这需要你在ACE的工程文件中自己设置。
4.6. 如果定义了ACE_AS_STATIC_LIBS 宏,则ACE 库将被编译成为静态库。如果你的程序要静态链接ACE的静态库,则在你的工程中也要定义这个宏:
ACE_AS_STATIC_LIBS.
作为可选项,为了减小静态库文件和你的可执行程序的大小,你可以在ACE_ROOT/ace/config.h文件的#include语句前添加如下的宏定义#define ACE_NO_INLINE来禁止内联函数。
4.7、 若是在其它平台上进行编译,还需要添加文件:
$ACE_ROOT/include/makeinclude/platform_macros.GNU
5、选择Tools -> Options -> Projects and Solutions -> VC++ Directories,添加如下编译器环境变量:
Executable files:
$(ACE_ROOT)/bin
$(CIAO_ROOT)/bin
Include files:
$(ACE_ROOT)
$(TAO_ROOT)
$(TAO_ROOT)/orbsvcs
$(CIAO_ROOT)
$(CIAO_ROOT)/ciao
Library files:
$(ACE_ROOT)/lib
6、下面对Tao进行编译
本实验系统是选择打开E:/ACE_wrappers/TAO文件夹下的TAO_ACE_vc9.sln,首先是对ACE进行编译,然后是对TAO进行编译,因为是应用TAO进行CORBA应用开发,下面的几个工程是必须的:
6.1、TAO_IDL_EXE(即tao_idl,也就是我们的idl编译器,自然少不了,并且后续工程也需
要用到该编译器。该工程依赖于ACE、TAO_IDL_BE、TAO_IDL_FE、gperf等多个工程,编
TAO_IDL_EXE是会自动先编译这几个工程),该程序在编译TAO时已自动编译。
6.2、PortableServer(即POA库,编写CORBA应用程序哪能离得开POA,该工程依赖于ACE、
TAO、CodeSet、AnyTypeCode等工程)
6.3、Naming_Service(即命名服务,这是对于我们开发CORBA应用相当有用的一个基本服
务,该工程依赖的其它工程就更多了,就不再一一列举了)
6.4、由于工程之间存在的复杂依赖关系,你只需编译最后这三个工程,就可以自动完成约30个工程的编译工作。编译完以上工程后,你的%ACE_ROOT%/lib和%ACE_ROOT%/bin下会多出来一些.lib、.dll和.exe文件。作为一个ORB服务,Name_Service.exe被放在其对应的子目录%TAO_ROOT%/orbsvcs/Name_Service下。
附录:
在google上搜索TAO使用指南,大致有一个原创来源于水木清华的在VC6.0下编译的方法,还有一个是CORBA Programming with TAO中的在VS2005中编译的方法,此文章没有找到最开始的来源,不过网上有很多转载,还有一个参考就是从官网下载下来ACE和TAO,它会带有一个安装的指南,本实验系统就是基本参考这三种方式进行的安装,编译。因为不同版本之间会有一些略微的不同,下面的内容就是有一些不同点或者是在开发过程中谋篇文章指出的注意要点.
一. 路径设置
1. 首先确认环境变量ACE_ROOT和TAO_ROOT已被正确设置.
2. 将(ACE_ROOT/bin)添加到PATH环境变量中. 否则会找不到DLL.
3. 在Tools->Options->Directories中, 分别添加如下目录:
Include files:
$(ACE_ROOT),$(TAO_ROOT),$(TAO_ROOT)/orbsvcs
Library files:
$(ACE_ROOT)/ace,$(TAO_ROOT)/tao,$(TAO_ROOT)/orbsvcs/orbsvcs
4. 也可以在Project->Settings->C/C++->Preprocessor->Additional include directories中添加头文件的路径.在Project->Settings->Link->Input->Additional library directories中添加静态库文件路径.
二. 工程设置
1. Project->Settings->C/C++->Code generation:
如果工程是Debug版, 选择Debug Multithreaded DLL
如果工程是Release版, 选择Multithreaded DLL
2. Project->Settings->Link->Input->Object/library modules:
需要添加TAO的静态链接库文件:
说明 Debug版 Release版
---------------------------------------------
普通客户端: Debug版: ACEd.lib
Release版: ACE.lib
普通服务器: 在ACE.lib/ACEd.lib的基础上, 还需要添加:
Debug版: PortableServerd.lib
Release版: PortableServer.lib
如果使用了名字服务, 则需要添加 TAO_CosNaming.lib 或
TAO_CosNamingd.lib
如果使用了事件服务, 则需要添加 TAO_CosEvent.lib 或
TAO_CosEventd.lib
注意: TAO分Debug和Release版, 所以在开发时, Debug和Release版的设置要严格区分. 即使是MS自己的库也是这样. 如对于Debug版, 要包含MSVCRTd.lib而不是MSVCRT.lib.
三、编译顺序.
TAO中有好多服务可能是你用不到的. 所以编译时没有必要将所有的程序全部
编译一遍. 要知道编译TAO还是个艰巨的任务咧.
我目前只用到了Naming和Event服务, 并且没有用它的实时CORBA功能. 所以我
的编译顺序是:
说明 需要编译的工程
---------------------------------------
核心库 ACE DLL Files
TAO DLL Files
IDL编译器 gperf Files
TAO_IDL_FE_DLL Files
TAO_IDL_BE_DLL Files
TAO_IDL Compiler Files
POA PortableServer Files
名字和事件服务 IORTable Files
Svc Utils Files
CosNaming Files
Naming_Service Files
Messaging Files
CosEvent Files
CosEvent_Service Files
NT_Naming_Service Files
----------------------------------------
四、 编译后得到的文件分散于各目录中:
可执行程序和动态链接库文件:
$ACE_ROOT/bin
lib文件:
$(ACE_ROOT)/ace,
$(TAO_ROOT)/tao,
$(TAO_ROOT)/orbsvcs/orbsvcs
头文件: $(ACE_ROOT),
$(TAO_ROOT),
$(TAO_ROOT)/orbsvcs
五、目录结构及SDK
TAO的文件众多, 目录结构复杂, 所以生成一个所谓的TAO SDK来方便开发.
这个TAO SDK的目录结构如下:
TAOSDK_ROOT
|
|-- bin (所有的可执行文件和动态链接库)
|-- idl (ORB的IDL文件)
|-- include (所有的头文件)
| |-- ace
| | |-- ***
| | |-- ***
| |
| |-- orbsvcs
| | |-- CosEvent
| | |-- Naming
| | |-- ***
| | |-- ***
| |
| |-- tao
| | |-- IORTable
| | |-- PortableServer
| | |-- ***
|-- lib (所有的静态库文件)
使用时, 首先创建环境变量 TAOSDK_ROOT 为TAO SDK的根目录, 然后在VC的工程中如下设置:
添加头文件的include路径:
$(TAOSDK_ROOT)/include,$(TAOSDK_ROOT)/include/orbsvcs,$(TAOSDK_ROOT)/tao
添加静态库文件路径:
$(TAOSDK_ROOT)/lib
参考:
1. Building and Installing ACE.
2. Building and Installing TAO.
3. TAO使用指南[zt from smth]
4. CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO)
http://blog.csdn.net/billdavid/archive/2006/05/12/726319.aspx