[ C++で開発 ] [ TAO CORBA実装 ]

TAO1.3.1 Windows Visual C++ 6.0インストール記録

ACE 5.3.1 + TAO 1.3.1を、Windows 2000 OS上にVisual C++ 6.0コンパイラでインストールしたときの記録。

Visual C++用プロジェクトファイルがソースと一緒に配布されています。これを用いれば簡単にインストールすることができます。

ビルドの準備

TAOのソースを入手します。

作業ディレクトリとして仮にF:\tmpの下に展開します。

torutk$ cd /cygdrive/f/tmp
tmp$ tar xvjf ACE+TAO.tar.bz2
 :
tmp$ ls -F
ACE_wrappers/
tmp$ 

ビルド実施記録

1. config.hの編集

ACE_wrapers\ace\config.h というファイルを新規に作成します。

ACE_wrappers\ace\config.hの記述
// -*- C++ -*-
#ifndef ACE_CONFIG_H
#define ACE_CONFIG_H

//#define ACE_HAS_WINNT4 0
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#define ACE_HAS_ANSI_CASTS 1
#include "ace/config-win32.h"

#endif /* ACE_CONFIG_H */
#define ACE_HAS_WINNT4 0
Windows 95/98で実行できるようにします。Windows 95/98で実行しないならコメントアウトします。
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
STLを含めたC++標準ライブラリを使用します。またC++標準に従ったインクルードファイルを使用します。(例えば<stdio.h>ではなく<cstdio>をインクルードするなど)
#define ACE_HAS_ANSI_CASTS 1
C++キャスト(dynamic_cast, static_cast, reinterpret_cast, const_cast)の使用を有効にします。この場合コンパイル時にRTTIが必要になります。ACEのデフォルト設定ではRTTIが有効になっていないので、この定義を有効にする場合は手動でACEのプロジェクト設定を変更します。

ここで記述していないシンボル

ACE_HAS_MFC
これを定義すると、たとえMFCを使用しない場合でも必ずMFCへのリンクがあるため依存が発生してしまう。また、ACEのmfc版ビルドの際はこの定義がプロジェクト設定で付加されている。そこで、このシンボルは使用しない。

2. platform_macros.GNUの編集

VC++の場合は不要です。

3. コンパイル・リンク

以下のワークスペースファイルが用意されています。ACEをビルドしていなければ、TAOACE.dswを使用します。ACEとTAOと別々にビルドするならば、ACEのビルドにはace.dswを、TAOのビルドにはTAO.dsw[*1]を使用します。

[*1] TAO1.3以降のTAO.dswはビルドが通らないので、最近のバージョンをビルドするときは、TAOACE.dswを使用した方がよいでしょう。

[*2] TAO1.4には、TAOACE.dswが含まれていません。TAOACE.mwcからmpcツールを使ってdswを生成する手順が必要になります。

TAOビルド用ワークスペースファイル
ワークスペースファイル 場所 内容
ace.dsw ACE_wrappers\ace ACEコアをビルドする
TAO.dsw ACE_wrappers\TAO\tao TAOの中核をビルドする(ACE、ツール、サービスは含まない)
tao_idl.dsw ACE_wrappers\TAO\TAO_IDL IDLコンパイラをビルドする
TAOACE.dsw ACE_wrappers\TAO ACE全部およびTAO全部をビルドする
TAOACE_Static.dsw ACE_wrappers\TAO
CosEvent_Service.dsw ACE_wrappers\TAO\orbsvcs\CosEvent_Service TAOイベントサービス

既にACEをインストールしている場合の設定

TAO.dswをビルドするのですが、このプロジェクト設定では、ACEが先にビルドされ、別なディレクトリにインストールされている場合に対応できていません。ACEのインクルードファイルやライブラリファイルが全てACE+TAOを展開した中にあることを想定して記述されています。そこで、Visual C++の共通設定にACEのパスを追加します。

[ツール]メニューから[オプション]を選択します。オプションダイアログが開かれるので、[ディレクトリ]タブを選択します。[表示するディレクトリ]リストボックスから、インクルードファイル、ライブラリファイルの2つを設定します。

オプションダイアログのディレクトリ設定
表示するディレクトリ ディレクトリに追加する内容
インクルードファイル D:\lib\ace\include
ライブラリファイル D:\lib\ace\lib
実行可能ファイル D:\lib\ace\bin

注)ACEがD:\lib\aceにインストールしてある場合

RTTIを有効にする(VC++6.0)

3.のconfig.hの編集で、ACE_HAS_ANSI_CASTSを有効にした場合、以降ビルドする全てのプロジェクト設定にRTTIを有効にする設定追加を行います。[プロジェクト]メニューから[設定]を選ぶと、プロジェクトの設定ダイアログが表示されます。設定の対象欄で[すべての構成]を選び、プロジェクトすべてを選択状態にします。次に右側のC/C++タブを選び、カテゴリ欄を[C++言語]に指定し、[ランタイムタイプ情報(RTTI)を有効にする]をチェックします。

VC++7.1用プロジェクトでは、RTTIはデフォルトで有効になっています。

gperf.dswによるgperfコマンドのビルド

TAOのIDLコンパイラなどでgperfコマンドを使用します。まだビルドされていなければ、先にgperfをビルドします。ビルド方法については、ACEインストールのページを参照。なお、Cygwinに含まれるgperfではコマンドラインオプション等の違いでうまく利用できません。(環境変数PATHにCygwinの実行ファイルが含まれているとCygwinのgperfが呼び出されます。環境変数PATHから除いておくか、VC++の実行可能ディレクトリリストから削除します。)

TAO.dswによるTAOのビルド

TAO.dswには、CORBAの中核となる29のプロジェクトが含まれています。(TAOソース構成を参照)
全てをビルドしても使用するものはごく一部なのですが、ここではリアルタイム以外のものをビルドしていきます。

プロジェクト種類 ビルド対象
BiDirGIOP Yes
Domain Yes
DynamicAny Yes
DynamicInterface Yes
IFR_Client Yes
IORManip Yes
IORTable Yes
Messaging Yes
PortableServer Yes
RTCORBA No
RTPortableServer No
RTScheduler
SmartProxies No
TAO Yes
TAO_Strategies Yes
TypeCodeFactory Yes
MFCビルドについて

プロジェクトを見ると、設定名にWin32 MFC ReleaseやWin32 MFC Debugというのがあります。これは、ACE/TAOのソースコードが、MFCを使う場合/使わない場合で異なるためです。例えば、内部でのスレッド生成にCWinThreadを使用する等です。

TAO1.3.3のビルドメモ

TAO1.3.3では、配布されているTAO.dswではビルドできません。ビルドを試みた経過をこちらにメモしました。

TAO 1.3.1のビルド
TAO.dswのビルド対象プロジェクト
プロジェクト名 設定名 内容
BiDirGIOP Win32 Release TAOの双方向IIOPのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
BiDirGIOP_Static Win32 Static Release TAOの双方向IIOPのスタティックリンクライブラリを生成する
Win32 Static Debug
Domain Win32 Release ドメインのDLLを生成する
Win32 Debug
Domain_Static Win32 Static Release ドメインのスタティックリンクライブラリを生成する
Win32 Static Debug
DynamicAny Win32 Release DynAnyのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
DynamicAny_Static Win32 Static Release DynAnyのスタティックリンクライブラリを生成する
Win32 Static Debug
DynamicInterface Win32 Release 動的起動インタフェースのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
DynamicInterface_Static Win32 Static Release 動的起動インタフェースのスタティックリンクライブラリを生成する
Win32 Static Debug
IRF_Client Win32 Release インタフェースリポジトリ(IFR)のクライアントのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
IRF_Client_Static Win32 Static Release インタフェースリポジトリ(IFR)のクライアントのスタティックリンクライブラリを生成する
Win32 Static Debug
IORManip Win32 Release DLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
IORManip_Static Win32 Static Release スタティックリンクライブラリを生成する
Win32 Static Debug
IORTable Win32 Release DLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
IORTable_Static Win32 Static Release スタティックリンクライブラリを生成する
Win32 Static Debug
TAO DLL Win32 Release TAOのORBコアのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
TAO LIB Win32 Static Release TAOのORBコアのスタティックリンクライブラリを生成する
Win32 Static Debug
PortableServer Win32 Release POAのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
PortableServer_Static Win32 Static Release POAのスタティックリンクライブラリを生成する
Win32 Static Debug
Messaging Win32 Release QoSメッセ-ジングのDLLを生成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
Messaging_Static Win32 Static Release QoSメッセ-ジングのスタティックリンクライブラリを生成する
Win32 Static Debug
TAO_Strategies Win32 Release DLLを生成する
Win32 Debug
TAO_Strategies_Static Win32 Static Release スタティックリンクライブラリを生成する
Win32 Static Debug
TypeCodeFactory Win32 Release DLLを作成する
Win32 Debug
Win32 MFC Release
Win32 MFC Debug
TypeCodeFactory_Static Win32 Static Release スタティックリンクライブラリを作成する
Win32 Static Debug
生成ファイル
TAO生成ライブラリ名(Visual C++)
ディレクトリ ライブラリファイル 種類
ACE_wrappers\bin\ TAO.dll
TAOd.dll
TAOmfc.dll
TAOmfcd.dll
TAO_BinDirGIOP.dll
TAO_BinDirGIOPd.dll
TAO_BinDirGIOPmfc.dll
TAO_BinDirGIOPmfcd.dll
TAO_Domain.dll
TAO_Domaind.dll
TAO_DynamicAny.dll
TAO_DynamicAnyd.dll
TAO_DynamicAnymfc.dll
TAO_DynamicAnymfcd.dll
TAO_DynamicInterface.dll
TAO_DynamicInterfaced.dll
TAO_DynamicInterfacemfc.dll
TAO_DynamicInterfacemfcd.dll
TAO_IFR_Client.dll
TAO_IFR_Clientd.dll
TAO_IFR_Clientmfc.dll
TAO_IFR_Clientmfcd.dll
TAO_IORManip.dll
TAO_IORManipd.dll
TAO_IORManipmfc.dll
TAO_IORManipmfcd.dll
TAO_IORTable.dll
TAO_IORTabled.dll
TAO_IORTablemfc.dll
TAO_IORTablemfcd.dll
TAO_Messaging.dll
TAO_Messagingd.dll
TAO_Messagingmfc.dll
TAO_Messagingmfcd.dll
TAO_PortableServer.dll
TAO_PortableServerd.dll
TAO_PortableServermfc.dll
TAO_PortableServermfcd.dll
TAO_Strategies.dll
TAO_Strategiesd.dll
TAO_TypeCodeFactory.dll
TAO_TypeCodeFactoryd.dll
TAO_TypeCodeFactorymfc.dll
TAO_TypeCodeFactorymfcd.dll
動的リンクライブラリファイル
ACE_wrappers\TAO\tao TAO.lib
TAOd.lib
TAOmfc.lib
TAOmfcd.lib
インポートライブラリファイル
TAOs.lib
TAOsd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\BiDir_GIOP TAO_BiDir_GIOP.lib
TAOBiDir_GIOPd.lib
TAO_BiDir_GIOPmfc.lib
TAO_BiDir_GIOPmfcd.lib
インポートライブラリファイル
TAO_BiDir_GIOPs.lib
TAO_BiDir_GIOPsd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\Domain TAO_Domain.lib
TAO_Domaind.lib
インポートライブラリファイル
TAO_Domains.lib
TAO_Domainsd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\DynamicAny TAO_DynamicAny.lib
TAO_DynamicAnyd.lib
TAO_DynamicAnymfc.lib
TAO_DynamicAnymfcd.lib
インポートライブラリファイル
TAO_DynamicAnys.lib
TAO_DynamicAnysd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\DynamicInterface TAO_DymamicInterface.lib
TAO_DymamicInterfaced.lib
TAO_DymamicInterfacemfc.lib
TAO_DymamicInterfacemfcd.lib
インポートライブラリファイル
TAO_DymamicInterfaces.lib
TAO_DymamicInterfacesd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\IFR_Client TAO_IFR_Client.lib
TAO_IFR_Clientd.lib
TAO_IFR_Clientmfc.lib
TAO_IFR_Clientmfcd.lib
インポートライブラリファイル
TAO_IFR_Clients.lib
TAO_IFR_Clientsd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\IORManipulation TAO_IORManip.lib
TAO_IORManipd.lib
TAO_IORManipmfc.lib
TAO_IORManipmfcd.lib
インポートライブラリファイル
TAO_IORManips.lib
TAO_IORManipsd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\Table TAO_IORTable.lib
TAO_IORTabled.lib
TAO_IORTablemfc.lib
TAO_IORTablemfcd.lib
インポートライブラリファイル
TAO_IORTables.lib
TAO_IORTablesd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\PortableServer TAO_PortableServer.lib
TAO_PortableServerd.lib
TAO_PortableServermfc.lib
TAO_PortableServermfcd.lib
インポートライブラリファイル
TAO_PortableServers.lib
TAO_PortableServersd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\Messaging TAO_Messaging.lib
TAO_Messagingd.lib
TAO_Messagingmfc.lib
TAO_Messagingmfcd.lib
インポートライブラリファイル
TAO_Messagings.lib
TAO_Messagingsd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\tao\Strategies TAO_Strategies.lib
TAO_Strategiesd.lib
インポートライブラリファイル
TAO_Strategiess.lib
TAO_Strategiessd.lib
スタティックリンクライブラリファイル
ACE_wrappers\TAO\TypeCodeFactory TAO_TypeCodeFactory.lib
TAO_TypeCodeFactoryd.lib
TAO_TypeCodeFactorymfc.lib
TAO_TypeCodeFactorymfcd.lib
インポートライブラリファイル
TAO_TypeCodeFactorys.lib
TAO_TypeCodeFactorysd.lib
スタティックリンクライブラリファイル

tao_idl.dswによるIDLコンパイラのビルド

IDLコンパイラを生成します。アプリケーション開発時にIDLファイルからC++スタブ、スケルトンファイルを生成するためにIDLコンパイラを使用します。CORBAアプリケーション開発時には、VC++の中やコマンドラインからIDLコンパイラを呼び出すので、実行体が1つあれば十分です。しかし、TAO自体のビルドには、それぞれのIDLコンパイラが必要とされるので、すべてビルドしておきます。
なお、インストールする場合は、TAO_IDL Compiler Win32 Static Releaseだけコピーします。

tao_idl.dswのビルド対象プロジェクト
プロジェクト名 設定名 内容
TAO_IDL Compiler Win32 Release IDLコンパイラを生成する。実行時に他のDLLを必要とする構成となる。
Win32 Debug
TAO_IDL Compiler Static Win32 Static Release IDLコンパイラを生成する。実行時には他のDLLは不要。
Win32 Static Debug
TAO_IDL_BE_DLL Win32 Release
Win32 Debug
TAO_IDL_BE_LIB Win32 Static Release
Win32 Static Debug
TAO_IDL_FE_DLL Win32 Release
Win32 Debug
TAO_IDL_FE_LIB Win32 Static Release
Win32 Static Debug

生成ファイル

TAO_IDL生成ライブラリ名(Visual C++)
ディレクトリ リファイル 種類
ACE_wrappers\bin\Release tao_idl_static.exe IDLコンパイラ
ACE_wrappers\TAO\TAO_IDL TAO_IDL_BE_LIBs.lib
TAO_IDL_FE_LIBs.lib
スタティックリンクライブラリファイル

ネーミングサービスの構築

ネーミングサービスのワークスペースファイル一覧
ワークスペースファイル 場所 内容
orbsvcs.dsw(CosNaming.dsp) ACE_wrappers\TAO\orbsvcs\orbsvcs ネーミングサービスのクライアント(IDL)
orbsvcs_static.dsw(CosNaming_Static.dsp)
Naming_Service.dsw ACE_wrappers\TAO\orbsvcs\Naming_Service ネーミングサービスのサーバ
Naming_Server_static.dsw
ネーミングサービスクライアントのビルド

ネーミングサービスのクライアントには、IDLファイルが含まれており、このIDLからIDLコンパイルされたファイルはサーバが必要としています。そこで、最初にクライアントからビルドします。

orbsvcs.dswをVC++で開いて、バッチビルドで以下のプロジェクトをビルドします。CosNamingプロジェクトは、Svc_Utilsプロジェクトへの依存を持っています(自動でビルドされます)。

プロジェクト設定の修正

orbsvcs.dswでCosNamingをビルドする際、Win32 mfc Release/Win32 mfc Debugの設定でリンクするファイルにTAO_IORTablemfc.lib/TAO_IORTablemfcd.libが抜けているためリンクエラーが発生します。そこで、追記します。

4. インストール

ACE+TAOを展開してビルドしたまま利用してもよいのですが、そのままでは大量のディスク(1GB以上)を食っているので、TAOを利用するのに必要なファイルだけを抜き出して別なディレクトリにインストールします。
以下、D:\lib\taoディレクトリ下にインストールする場合です。

D:\lib\tao
       +--- bin         実行ファイル、DLLファイルを格納 
       +--- include     ヘッダファイル等を格納
       |     +--- tao   
       +--- lib         リンク時に必要なライブラリファイルを格納

ヘッダファイル群のコピー

一律コピー(不要なファイルも混じる)

ACE_wrappers\tao直下、およびACE_wrappers\tao\PortableServer直下にあるヘッダファイル(*.h)をコピーします。なお、ヘッダファイルの中でインクルードされているファイルが幾種類かあります。例えば、*.i、*.inl、*.cppなどです。これらも一緒にコピーする必要があります。安直な方法は、拡張子*.i、*.inl、*.cppを全てインストール先にコピーします。

tmp$ cd ACE_wrappers/TAO/tao
tao$ cp *.h *.i *.inl *.cpp /cygdrive/d/lib/tao/include/tao
tao$ cd PortableServer
PortableServer$ cp *.h *.i *.inl *.cpp \
  /cygdrive/d/lib/tao/include/tao/PortableServer/
PortableServer$

これでは不要なファイル(特に*.cppファイル)もコピーされてしまいます。そこで必要なファイルだけをコピーする方法を考えます。

必要なファイルだけをコピー

*.hと*iと*inlは全てコピーします。
*.cppファイルは、ヘッダファイル内で#include指令で記述されているものだけが必要なので、これを引っ掛けてコピーします。判定にはUNIXのfind、grep、awkコマンドを使用していますがあまりきれいではありません。とりあえず、*.cppが277ファイルあるうち16ファイルがコピー対象となりました。

*.hと*.iと*.inlはディレクトリ構成を維持してコピーします。ここではビルドしていないRTCORBA、RTPortableServer、SmartProxiesディレクトリ以下はコピー対象から除去しています。

tmp$ cd ACE_wrappers/TAO/tao
tao$ find . -name "RT*" -prune -o -name "SmartProxies" -prune -o
  \( -name "*.h" -o -name "*.i" -o -name "*.inl" \) -print |
  cpio -pd /cygdrive/d/lib/tao/include/tao/
9128 blocks
tao$  
tao$

ヘッダファイル(*.h)中からインクルードしている*.cppファイルを検索し、ディレクトリ構成を維持してコピーします。

tao$ find . -name "*.h" -print|xargs grep "^[ ]*#[ ]*include" | grep ".cpp"
  | awk 'FS="\""{split($0, chank); gsub(/tao\//, "", chank[2]); print 
  "find . -name", chank[2], "-print | cpio -pd /cygdrive/d/lib/tao/include/tao/"}'
  > cpio.list
tao$ sh cpio.list
tao$

IDLファイル群のコピー

tao$ cd ..
TAO$ find . \( -name "*tests" -o -name "examples" -o -name "Test" -o
 -name "Example" -o -name "docs" \) -prune -o -name "*idl" -print |
 cpio -pd /win32app/lib/tao/idls/
1125 blocks
TAO$

リンク解決用ファイルのコピー

Windowsの共有ライブラリファイル(DLL)は、リンク時に必要なインポートライブラリファイル(*.lib)と実行時に必要なダイナミックリンクライブラリファイル(*.dll)に分かれています。一方、スタティックリンクライブラリファイル(*.lib)は1種類だけです。そこで、リンク解決時に必要なファイルと実行時に必要なファイルをインストールするディレクトリを分けます。なぜならば、実行時に必要なファイルのあるディレクトリは環境変数PATHに含めるからです。

TAO$ find . -name "*.lib"
./tao/BiDir_GIOP/TAO_BiDirGIOP.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPd.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPmfc.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPmfcd.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPs.lib
./tao/BiDir_GIOP/TAO_BiDirGIOPsd.lib
./tao/Domain/TAO_Domain.lib
./tao/Domain/TAO_Domaind.lib
./tao/Domain/TAO_Domains.lib
./tao/Domain/TAO_Domainsd.lib
./tao/DynamicAny/TAO_DynamicAny.lib
./tao/DynamicAny/TAO_DynamicAnyd.lib
./tao/DynamicAny/TAO_DynamicAnymfc.lib
./tao/DynamicAny/TAO_DynamicAnymfcd.lib
./tao/DynamicAny/TAO_DynamicAnys.lib
./tao/DynamicAny/TAO_DynamicAnysd.lib
./tao/DynamicInterface/TAO_DynamicInterface.lib
./tao/DynamicInterface/TAO_DynamicInterfaced.lib
./tao/DynamicInterface/TAO_DynamicInterfacemfc.lib
./tao/DynamicInterface/TAO_DynamicInterfacemfcd.lib
./tao/DynamicInterface/TAO_DynamicInterfaces.lib
./tao/DynamicInterface/TAO_DynamicInterfacesd.lib
./tao/IFR_Client/TAO_IFR_Client.lib
./tao/IFR_Client/TAO_IFR_Clientd.lib
./tao/IFR_Client/TAO_IFR_Clientmfc.lib
./tao/IFR_Client/TAO_IFR_Clientmfcd.lib
./tao/IFR_Client/TAO_IFR_Clients.lib
./tao/IFR_Client/TAO_IFR_Clientsd.lib
./tao/IORManipulation/TAO_IORManip.lib
./tao/IORManipulation/TAO_IORManipd.lib
./tao/IORManipulation/TAO_IORManipmfc.lib
./tao/IORManipulation/TAO_IORManipmfcd.lib
./tao/IORManipulation/TAO_IORManips.lib
./tao/IORManipulation/TAO_IORManipsd.lib
./tao/IORTable/TAO_IORTable.lib
./tao/IORTable/TAO_IORTabled.lib
./tao/IORTable/TAO_IORTablemfc.lib
./tao/IORTable/TAO_IORTablemfcd.lib
./tao/IORTable/TAO_IORTables.lib
./tao/IORTable/TAO_IORTablesd.lib
./tao/Messaging/TAO_Messaging.lib
./tao/Messaging/TAO_Messagingd.lib
./tao/Messaging/TAO_Messagingmfc.lib
./tao/Messaging/TAO_Messagingmfcd.lib
./tao/Messaging/TAO_Messagings.lib
./tao/Messaging/TAO_Messagingsd.lib
./tao/PortableServer/TAO_PortableServer.lib
./tao/PortableServer/TAO_PortableServerd.lib
./tao/PortableServer/TAO_PortableServermfc.lib
./tao/PortableServer/TAO_PortableServermfcd.lib
./tao/PortableServer/TAO_PortableServers.lib
./tao/PortableServer/TAO_PortableServersd.lib
./tao/Strategies/TAO_Strategies.lib
./tao/Strategies/TAO_Strategiesd.lib
./tao/Strategies/TAO_Strategiess.lib
./tao/Strategies/TAO_Strategiessd.lib
./tao/TAO.lib
./tao/TAOd.lib
./tao/TAOmfc.lib
./tao/TAOmfcd.lib
./tao/TAOs.lib
./tao/TAOsd.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactory.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactoryd.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorymfc.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorymfcd.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorys.lib
./tao/TypeCodeFactory/TAO_TypeCodeFactorysd.lib
./TAO_IDL/TAO_IDL_BE_DLL.lib
./TAO_IDL/TAO_IDL_BE_DLLd.lib
./TAO_IDL/TAO_IDL_BE_LIBs.lib
./TAO_IDL/TAO_IDL_BE_LIBsd.lib
./TAO_IDL/TAO_IDL_FE_DLL.lib
./TAO_IDL/TAO_IDL_FE_DLLd.lib
./TAO_IDL/TAO_IDL_FE_LIBs.lib
./TAO_IDL/TAO_IDL_FE_LIBsd.lib
TAO$ find . -name "*.lib" -exec cp {} /cygdrive/d/lib/tao/lib/ \;
TAO$ 

DLL、実行ファイルのコピー

Windowsの共有ライブラリファイル(DLL)は、ライブラリを使用するアプリケーションが起動したときに読み込まれます(黙示のリンクの場合)。その際、DLLファイルは環境変数PATHの中から検索されるので、DLLファイルは環境変数PATHで指定するディレクトリに配置します。ここでACEに含まれる実行ファイル等はインストール先(例えばD:\lib\ace)の中にbinという名前のディレクトリを設けてコピーします。

TAO$ cd ../bin
bin$ find . \( -name "*.dll" -o -name "*.exe" \) -a \
  \( -name "tao*" -o -name "TAO*" \) -print
./Release/tao_idl.exe
./Release/tao_idl_static.exe
./TAO.dll
./TAOd.dll
./TAOmfc.dll
./TAOmfcd.dll
./TAO_BiDirGIOP.dll
./TAO_BiDirGIOPd.dll
./TAO_BiDirGIOPmfc.dll
./TAO_BiDirGIOPmfcd.dll
./TAO_Domain.dll
./TAO_Domaind.dll
./TAO_DynamicAny.dll
./TAO_DynamicAnyd.dll
./TAO_DynamicAnymfc.dll
./TAO_DynamicAnymfcd.dll
./TAO_DynamicInterface.dll
./TAO_DynamicInterfaced.dll
./TAO_DynamicInterfacemfc.dll
./TAO_DynamicInterfacemfcd.dll
./tao_idl.exe
./TAO_IDL_BE_DLL.dll
./TAO_IDL_BE_DLLd.dll
./TAO_IDL_FE_DLL.dll
./TAO_IDL_FE_DLLd.dll
./tao_idl_static.exe
./TAO_IFR_Client.dll
./TAO_IFR_Clientd.dll
./TAO_IFR_Clientmfc.dll
./TAO_IFR_Clientmfcd.dll
./TAO_IORManip.dll
./TAO_IORManipd.dll
./TAO_IORManipmfc.dll
./TAO_IORManipmfcd.dll
./TAO_IORTable.dll
./TAO_IORTabled.dll
./TAO_IORTablemfc.dll
./TAO_IORTablemfcd.dll
./TAO_Messaging.dll
./TAO_Messagingd.dll
./TAO_Messagingmfc.dll
./TAO_Messagingmfcd.dll
./TAO_PortableServer.dll
./TAO_PortableServerd.dll
./TAO_PortableServermfc.dll
./TAO_PortableServermfcd.dll
./TAO_Strategies.dll
./TAO_Strategiesd.dll
./TAO_TypeCodeFactory.dll
./TAO_TypeCodeFactoryd.dll
./TAO_TypeCodeFactorymfc.dll
./TAO_TypeCodeFactorymfcd.dll
bin$ find . -name "*.dll" \( -name "tao*" -o -name "TAO*" \) \  
  -exec cp {} /cygdrive/d/lib/tao/bin/ \;
bin$ cp Release/tao_idl*.exe /cygdrive/d/lib/tao/bin/
bin$

バージョンファイルのコピー

ACEがどのバージョンかを示すファイルが1つあるので、これをコピーしておきます。

bin$ cd ../TAO
TAO$ ls VERSION
VERSION
TAO$ cp VERSION /cygdrive/d/lib/tao/
TAO$  

環境変数・ツールオプションの設定

DLLやツールの実行ファイルを呼び出すための環境変数PATH設定、TAOアプリケーションのビルド時に使用するインクルードファイル・ライブラリファイルの置き場所の指定が必要となります。

環境変数

TAOを利用するアプリケーションでは、伝統的に環境変数TAO_ROOTを使用します。また、DLLファイルを置いたディレクトリを環境変数PATHに追加する必要があります。そこで、この2つの環境変数を設定しておきます。

環境変数名 設定方法 設定内容
TAO_ROOT 新規作成 D:\lib\tao
PATH 追加 %TAO_ROOT%\binを追加する[*1]

[*1] %TAO_ROOT%\binを環境変数PATHに記述しても、%TAO_ROOT%が正しく環境変数TAO_ROOTの中身に展開されないかもしれません。

ツールオプション

TAOを使用するアプリケーションを開発する場合、インクルードファイルのパスと追加ライブラリのパスにACEのinclude、libおよびTAOのinclude、libを指定します。また、IDLコンパイラ等のツールをVisual C++内部から呼び出す場合のツール格納ディレクトリを指定します。

オプションダイアログのディレクトリ設定
表示するディレクトリ ディレクトリに追加する内容 備考
実行可能ファイル D:\lib\ace\bin
D:\lib\tao\bin
IDLコンパイラをVC++内部から呼び出す場合は、この設定は必須です。
インクルードファイル D:\lib\ace\include
D:\lib\tao\include
個々のプロジェクト毎にパスを記述するならば不要。
ライブラリファイル D:\lib\ace\lib
D:\lib\tao\lib
個々のプロジェクト毎にパスを記述するならば不要。