CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO)

 

CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO

摘要:

简要介绍如何在Windows平台上编译ACE/TAO/CIAO,及编译过程中需注意的问题。

正文:

随着ACE/TAO/CIAO研究者研究的不断深入,整个平台变得越来越庞大,涉及的工程及目录数目也越来越多,下面简要介绍一下如何在Windows平台上编译ACE/TAO/CIAO,其过程在其它平台上是类似的。

一、目录结构

在开始之前,先简要介绍一下整个产品的目录结构。ACEAdaptive Communication Environment)是整个ACE/TAO/CIAO体系的基础,由操作系统适配层、对并发/进程间通信/虚拟内存管理等的OO封装、ACE框架、网络服务组件等几个部分组成;而TAOThe ACE ORB)则是在ACE基础上建立起来的一个CORBA ORB实现;CIAOComponent Integrated ACE ORB)则是在TAO基础上的一个CORBA Component Model实现,同时CIAO也是目前相对比较成熟的一个CCM实现。

正是由于三者之间的上述关系,在目录结构上整个源码包也采用了类似下面的结构:

ACE_ROOT

├─ace

├─docs

├─...

├─TAO

  ├─tao

  ├─docs

  ├─orbsvcsTAO实现的众多CORBA服务被放置在这个目录下)

  ├─...

  ├─CIAO

    ├─ciao

    ├─docs

    ├─DAnCE

    ├─RACE

    ├─...

三个产品的帮助文档,可以在相应节点下的docs目录中找到,其中除了对相应产品特定模块或服务的说明外,还包括一些不错的Tutorial,对于我们理解相应产品很有帮助(ACE/TAO/CIAO的较完整的文档是收费的,这些随源码发布的文档虽然少,但仍颇为有用)。

二、关于编译器

可以使用VC6/7.1/8来编译ACE/TAO/CIAO,不推荐使用VC7,但由于VC6Project Settings不支持环境变量,会对我们使用CIAO带来一些麻烦(如需手动修改自动生成的工程文件),因此,笔者推荐读者使用VC8,即Visual C++ 2005来进行编译(注:现在VC++ 2005 Express可以从MS的网站上免费获得,但若安装该版本的话,需按照http://lab.msdn.microsoft.com/express/visualc/usingpsdk/default.aspx的指示安装SDK并进行相关设置)。VC8在调试器的设计上有了很大改进,同时对C++标准的支持也有了很大进步(但也变得非常耗资源),因此,下面的讨论将基于ACE-5.5+TAO-1.5+CIAO-0.5 + VC2005 Express,不保证在其它ACE或编译器版本下完全一致。

三、基本设置

好啦,废话说完了,重新回到我们的主题。

首先,设置好如下环境变量:

ACE_ROOT

TAO_ROOT

CIAO_ROOT

分别指向ACE根目录,TAO根目录(即%ACE_ROOT%/TAO),CIAO根目录(即%TAO_ROOT%/CIAO)。

%ACE_ROOT%/ace目录下添加一个文件config.h,并在其中添加如下内容:

 

/* -*- C++ -*- */

//=============================================================================

/**

* @file config.h

*

*/

//=============================================================================

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

#include "ace/config-win32.h"

 

若是在其它平台上进行编译,还需要添加文件:

$ACE_ROOT/include/makeinclude/platform_macros.GNU

具体方法见ACE Installation Guide

 

此外,为了便于今后使用ACE/TAO/CIAO,应当将

%ACE_ROOT%/bin(部分通用工具的输出目录)

%ACE_ROOT%/lib(所有.lib.dll文件的输出目录)

添加到PATH环境变量中。

并且,需打开VC8,选择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

四、开始编译

现在可以开始编译了,但是,在笔者的Win2000中编译ACE5.5/TAO1.5/CIAO0.5时遇到的第一个问题就是:源码包中的VC Workspace/Solution打开之后一片空白,一个工程也没有。(上一版本没有这个问题。最终通过比较源码包中的.sln文件和通过下面的方法得到的.sln文件,发现其实是由于文件是Unix格式造成的)

几经周折,终于想到了一个办法:自己运行mwc.pl重新生成工程文件。

要运行mwc.pl自然需要安装Perl,安装过程略。

 

下面简单说说mwc的工作原理:

mwc.pl根据参数中指定的.mwc文件的内容到相应目录下查找.mpc文件,在没有指定.mwc文件或.mwc文件中没有指定查找目录的情况下会尝试进入各子目录,查找.mpc文件(相当于一个makefile文件),按照.mpc文件生成工程信息,若连一个.mpc文件也找不到,就将当前目录下所有可识别的文件当作源文件,产生一个默认的工程文件。最终,mwc.pl将所有工程文件合并到一个独立的Solution/Workspace

.mwc文件的结构其实很简单,下面是%TAO_ROOT%/TAO_ACE.mwc的全部内容:

 

// -*- MPC -*-

// TAO_ACE.mwc,v 1.1 2006/02/16 09:20:48 jwillemsen Exp

 

workspace {

  ../ace

  ../apps/gperf/src

  ../ACEXML/common

  ../ACEXML/parser/parser

  ../ACEXML/apps/svcconf

  ../Kokyu/Kokyu.mpc

  ../protocols

  tao

  TAO_IDL

  utils

  orbsvcs

  exclude {

    orbsvcs/tests

    orbsvcs/performance-tests

    orbsvcs/examples

  }

}

 

其作用就是告诉mwc.pl到哪些目录下去查找.mpc文件(若没有指定,则表示应检查所有子目录),而其中的exclude则表示应略过那些目录,如果你愿意,完全可以自己编写.mwc文件(不过,工程具体的描述文件.mpc则比较复杂,一言难尽,想一探究竟的话,最好还是看看MPC的说明文档http://www.cs.wustl.edu/~schmidt/ACE_wrappers/MPC/USAGEhttp://downloads.ociweb.com/MPC/MakeProjectCreator.pdf)。

mwc.pl的工作原理有了基本的了解后,就可以运行mwc.pl生成工程文件了。执行mwc.pl的办法很简单,如要生成使用CIAO的基本工程,可以在%CIAO_ROOT%下运行:

mwc.pl -type vc8 CIAO_TAO.mwc

上述命令将产生一个名为CIAO_TAO.slnSolution文件,有了.sln文件,就可以正式进行编译了。

 

应用TAO进行CORBA应用开发,下面的几个工程是必须的:

·        TAO_IDL_EXE(即tao_idl,也就是我们的idl编译器,自然少不了,并且后续工程也需要用到该编译器。该工程依赖于ACETAO_IDL_BETAO_IDL_FEgperf等多个工程,编译TAO_IDL_EXE是会自动先编译这几个工程)

·        PortableServer(即POA库,编写CORBA应用程序哪能离得开POA,该工程依赖于ACETAOCodeSetAnyTypeCode等工程)

·        Naming_Service(即命名服务,这是对于我们开发CORBA应用相当有用的一个基本服务,该工程依赖的其它工程就更多了,就不再一一列举了)

而要使用CIAO,则还必须编译%CIAO_ROOT%/DAnCE下的多个工程,这些工程包括:

·        ExecutionManager

·        NodeManager

·        Plan_Launcher

·        NodeApplication

这几个工程是部署与配置引擎(Deployment And Configuration EngineDAnCE)的一部分,负责处理面向组件的应用的部署与配置。

由于工程之间存在的复杂依赖关系,你只需编译最后这三个工程,就可以自动完成约30个工程的编译工作。编译完以上工程后,你的%ACE_ROOT%/lib%ACE_ROOT%/bin下会多出来一些.lib.dll.exe文件。作为一个ORB服务,Name_Service.exe被放在其对应的子目录%TAO_ROOT%/orbsvcs/Name_Service下。

 

注:

1、为了编译CIAO_XML_Utils,需要安装Xerces-C++ 2.7.0,但http://xml.apache.org/xerces-c/提供的下载采用VC6编译,该版本不能用于VC7及以上版本,如果你用的不是VC6,则需要下载源码重新编译。如果你用的是VC++ 2005 Express,由于没有ATLMFC,在编译时会遇到一些麻烦,可以在SDK Dir/include下自行添加一个WINRES.h,在其中添加如下代码(两行,空行是必须的):

#include <winresrc.h>

 

2、如果要试用CIAO,还需用到cidl编译器cidlc,该工具可以从http://www.dre.vanderbilt.edu/cidlc/binary/下载。

参考:

1.      Building and Installing ACE and Its Auxiliary Libraries and Services. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-INSTALL.html

2.      Building and Installing CIAO. http://www.cs.wustl.edu/~schmidt/ACE_wrappers/TAO/CIAO/CIAO-INSTALL.html

3.      The Makefile, Project, and Workspace Creator (MPC). http://downloads.ociweb.com/MPC/MakeProjectCreator.pdf

你可能感兴趣的:(CORBA Programming with TAO - 2.Compile Source Code(编译ACE/TAO/CIAO))