このページの内容は、ACEインストールのページおよびTAOインストールのページへ移行中です。
TAOのページより、以下のファイルをダウンロードする。
2003年1月16日、ACE-5.3+TAO-1.3がリリースされています。
これを適当な作業用ディレクトリに展開する。すると、以下のようなディレクトリ構造が展開される。展開するだけで、183MBのディスク容量を消費した。
ACE_wrappers | ACEXML | XMLパーサ・フレームワーク(SAX2.0) | |||
ASNMP | ACE+SNMP!(Another SNMP API) | ||||
ChangeLogs | ACEの変更履歴 | ||||
PACE | POSIX ACE. 軽量化。POSIX.1様の下位インタフェースでCで記述している。 | ||||
TAO | ChangeLogs | TAOの変更履歴 | |||
TAO_IDL | IDLコンパイラ | ||||
docs | |||||
examples | CORBAのサンプルプログラム | ||||
man | |||||
orbsvcs | Concurrency_Service | 実行ファイル | |||
CosEvent_Service | 実行ファイル | ||||
Dump_Schedule | |||||
Event_Service | 実行ファイル | ||||
IFR_Service | 実行ファイル | ||||
ImplRepo_Service | 実行ファイル | ||||
LifeCycle_Service | 実行ファイル | ||||
LoadBalancer | 実行ファイル | ||||
Logging_Service | 実行ファイル | ||||
Naming_Service | 実行ファイル | ||||
Notify_Service | 実行ファイル | ||||
PSS | Persistece Stateサービス・コンパイラ | ||||
Scheduling_Service | 実行ファイル | ||||
TAO_Service | サービス管理サーバ | ||||
Time_Service | 実行ファイル | ||||
Trading_Service | 実行ファイル | ||||
examples | |||||
orbsvcs | AV | A/V Streamsサービス | |||
Concurrency | Concurrencyサービス | ||||
CosEvent | Eventサービス | ||||
ESF | |||||
ETCL | |||||
Event | Real-time Eventサービス | ||||
FaultTolerance | |||||
IFRService | |||||
LifeCycle | LifeCycleサービス | ||||
LoadBalancing | Load Balancingサービス | ||||
Log | Loggingサービス | ||||
Naming | Namingサービス | ||||
Notify | Notificationサービス | ||||
PortableGroup | |||||
Property | Propertyサービス | ||||
Sched | Schedulingサービス | ||||
Security | Securityサービス | ||||
SSLIOP | SSLIOP Pluggableプロトコル | ||||
Time | Timeサービス | ||||
Trader | Tradingサービス | ||||
performance-tests | |||||
tests | |||||
performance-tests | |||||
tao | |||||
tests | |||||
utils | |||||
ace | |||||
apps | |||||
bin | |||||
docs | |||||
etc | |||||
examples | |||||
include | |||||
m4 | |||||
man | |||||
netsvcs | |||||
os-patches | |||||
performance-tests | |||||
tests | |||||
websvcs |
ドキュメントによれば、Windowsでは以下のコンパイラに対応している。
ワークスペース名 | 場所 | 備考 |
TAOACE.dsw | ACE_wrappers/TAO | TAOと必要なACEのプロジェクトをロードする。 |
TAOACE_Static.dsw | 上記のスタティックリンクライブラリ作成用。但し、TAOACE.dswで構築する全てのプロジェクトをサポートはしていない。 | |
TAO.dsw | ACE_wrappers/TAO/tao | TAOビルド用 |
ace.dsw | ACE_wrappers/ace | ACEビルド用 |
Windows用のACE・TAOは、以下の種類がありちょっと複雑である。すべてをビルドするとかなりディスク容量を消費するので、生成するライブラリ種類は絞った方がよいだろう。
ライブラリ形式 | MFC有無 | ビルド種類 | 構成名称 | |
---|---|---|---|---|
スタティック | - | Release | Win32 - Static Release | |
- | Debug | Win32 - Static Debug | ||
ダイナミック | 無 | Release | Win32 - Release | |
Debug | Win32 - Debug | |||
有 | Release | Win32 - MFC Release | ||
Debug | Win32 - MFC Debug |
以下はビルドするプロジェクトファイルとビルド種類毎に生成されるライブラリ・実行ファイルの対応である。
プロジェクト名 | ダイナミック | 依存先 | |||
---|---|---|---|---|---|
MFC無 | MFC有 | ||||
Release | Debug | Releaes | Debug | ||
ACE DLL | ace.dll | aced.dll | acemfc.dll | acemfcd.dll | - |
ACE LIB | aces.lib | asesd.lib | - | - | |
ACE_RMCast | ACE_RMCast.dll | ACE_RMCastd.dll | - | - | |
ACE_SSL | ACE_SSL.dll | ACE_SSLd.dll | - | - | ACE DLL |
ACE_QoS DLL | ACE_Qos.dll | ACE_QoSd.dll | - | - | ACE DLL |
XML_Common | ACEXML.dll | ACEXMLD.dll | |||
ACEXML_Parser | ACEXML_Parser.dll | ACEXML_Parserd.dll | - | - | ACE DLL XML_Common |
TAO DLL | TAO.dll | TAOd.dll | TAOmfc.dll | TAOmfcd.dll | ACE DLL |
TAO_IDL_FE_DLL | TAO_IDL_FE_DLL.dll | TAO_IDL_FE_DLLd.dll | - | - | ACE DLL gperf |
TAO_IDL_BE_DLL | TAO_IDL_BE_DLL.dll | TAO_IDL_BE_DLLd.dll | TAO_IDL_FE_DLL | ||
TAO_IDL Compiler | tao_idl.exe | TAO_IDL_BE_DLL TAO_IDL_FE_DLL |
|||
AV | TAO_AV.dll | TAO_AVd.dll | TAO_AVmfc.dll | TAO_AVmfcd.dll | ACE_QoS DLL TAO DLL TAO_IDL Compiler CosProperty CosNaming CosTrading IORTable |
BiDirGIOP | TAO_BiDirGIOP.dll | TAO_BiDirGIOPd.dll | TAO_BiDirGIOPmfc.dll | TAO_BiDirGIOPmfcd.dll | TAO DLL |
Concurrency_Service | Concurrency_Service.exe | - | - | CosConcurrency CosNaming |
|
CosConcurrency | TAO_CosConcurrency.dll | TAO_CosConcurrencyd.dll | TAO_CosConcurrencymfc.dll | TAO_CosConcurrencymfcd.dll | TAO DLL TAO_IDL Compiler PortableServer |
CosEvent | TAO_CosEvent.dll | TAO_CosEventd.dll | TAO_CosEventmfc.dll | TAO_CosEventmfcd.dll | TAO DLL TAO_IDL Compiler CosNaming Messaging |
CosEvent_Service | CosEvent_Service.exe | - | - | CosEvent CosNaming |
|
CosLifeCycle | TAO_CosLifeCycle.dll | TAO_CosLifeCycled.dll | TAO_CosLifeCyclemfc.dll | TAO_CosLifeCyclemfcd.dll | TAO DLL TAO_IDL Compiler CosNaming |
CosLoadBalancing | TAO_CosLoadBalancing.dll | TAO_CosLoadBalancingd.dll | TAO_CosLoadBalancingmfc.dll | TAO_CosLoadBalancingmfcd.dll | PortableGroup Messaging |
CosNaming | TAO_CosNaming.dll | TAO_CosNamingd.dll | TAO_CosNamingmfc.dll | TAO_CosNamingmfcd.dll | Svc Utils IORTable |
CosNotification | TAO_CosNotification.dll | TAO_CosNotificationd.dll | TAO_CosNotificationmfc.dll | TAO_CosNotificationmfcd.dll | CosEvent ETCL DLL DynamicAny |
CosProperty | TAO_CosProperty.dll | TAO_CosPropertyd.dll | TAO_CosPropertymfc.dll | TAO_CosPropertymfcd.dll | TAO DLL TAO_IDL Compiler gperf PortableServer |
CosTime | TAO_CosTime.dll | TAO_CosTimed.dll | TAO_CosTimemfc.dll | TAO_CosTimemfcd.dll | TAO DLL TAO_IDL Compiler CosNaming |
CosTrading | TAO_CosTrading.dll | TAO_CosTradingd.dll | TAO_CosTradingmfc.dll | TAO_CosTradingmfcd.dll | TAO DLL TAO_IDL Compiler DynamicAny |
Domain | TAO_Domain.dll | TAO_Domaind.dll | - | - | PortableServer IFR_Client |
DsEventLogAdmin | TAO_DsEventLogAdmin.dll | TAO_DsEventLogAdmind.dll | - | - | CosEvent DsLogAdmin |
DsLogAdmin | TAO_DsLogAdmin.dll | TAO_DsLogAdmind.dll | TAO_DsLogAdminmfc.dll | TAO_DsLogAdminmfcd.dll | Svc Utils DynamicAny ETCL DLL |
DsNotifyLogAdmin | TAO_DsNotifyLogAdmin.dll | TAO_DsNotifyLogAdmind.dll | - | - | CosNotification DsEventLogAdmin |
Dump_Schedule | Dump_Schedule.exe | - | - | CosNaming RTOLDEvent RTSched |
|
DynamicAny | TAO_DynamicAny.dll | TAO_DynamicAnyd.dll | TAO_DynamicAnymfc.dll | TAO_DynamicAnymfcd.dll | TAO DLL |
DynamicInterface | TAO_DynamicInterface.dll | TAO_DynamicInterfaced.dll | TAO_DynamicInterfacemfc.dll | TAO_DynamicInterfacemfcd.dll | TAO DLL PortableServer |
ETCL DLL | ETCL.dll? | ETCLd.dll? | - | - | TAO DLL |
Event_Service | Event_Service.exe | - | - | CosNaming Messaging RTEvent RTOLDEvent RTSched RTSchedEvent |
|
FT ORB | TAO_FT_ORB.dll | TAO_FT_ORBd.dll | TAO_FT_ORBmfc.dll | TAO_FT_ORBmfcd.dll | ACE DLL IORManip PortableServer TAO DLL |
Fault Tolerance | TAO_Fault_Tolerance.dll | TAO_Fault_Toleranced.dll | TAO_Fault_Tolerancemfc.dll | TAO_Fault_Tolerancemfcd.dll | ACE DLL FT ORB CosEvent CosNaming CosNotification IORManip PortableServer Svc Utils TAO DLL |
IFRService | TAO_IFRSERVICE.dll | TAO_IFRServiced.dll | TAO_IFRServicemfc.dll | TAO_IFRServicemfcd.dll | IORTable PortableServer Svc Utils TAO DLL TypeCodeFactory |
IFR_Client | TAO_IFR_Client.dll | TAO_IFR_Clientd.dll | TAO_IFR_Clientmfc.dll | TAO_IFR_Clientmfcd.dll | TAO DLL |
IFR_Service | IFR_Service.exe | - | - | IFRService | |
IORManip | TAO_IORManip.dll | TAO_IORManipd.dll | TAO_IORManipmfc.dll | TAO_IORManipmfcd.dll | TAO DLL |
IORTable | TAO_IORTable.dll | TAO_IORTabled.dll | TAO_IORTablemfc.dll | TAO_IORTablemfcd.dll | TAO DLL |
ImR_Activator | ImR_Activator.exe | - | - | ACEXML_Parser IORTable Svc Utils |
|
ImplRepo_Service | ImplRepo_Service.exe | - | - | ACE DLL Svc Utils TAO DLL IORTable DynamicInterface PortableServer |
|
LifeCycle_Service | LifeCycle_Service.exe | - | - | CosLifeCycle CosNaming CosTrading |
|
LoadManager | LoadManager.exe | CosLoadBalancing | |||
LoadMonitor | CosLoadBalancing | ||||
Messaging | TAO DLL | ||||
NT_Naming_Service | CosNaming | ||||
Naming_Service | CosNaming | ||||
Notify_Service | CosNaming CosNotification |
||||
PortableGroup | PortableServer CosNaming |
||||
PortableServer | TAO DLL | ||||
RTCORBA | TAO DLL | ||||
RTCORBAEvent | RTCORBA RTEvent RTPortableServer Messaging |
||||
RTEvent | TAO DLL TAO_IDL Compiler Svc Utils CosNaming RTSched Messaging |
||||
RTEventLog | CosEvent DsLogAdmin RTEvent |
||||
RTOLDEvent | TAO DLL TAO_IDL Compiler RTEvent RTSched |
||||
RTPortableServer | PortableServer RTCORBA TAO DLL |
||||
RTSched | TAO DLL TAO_IDL Compiler CosNaming Svc Utils |
||||
RTSchedEvent | TAO DLL TAO_IDL Compiler RTEvent RTSched |
||||
SSLIOP | ACE_SSL Security |
||||
Scheduling_Service | CosNaming RTSched |
||||
Security | TAO DLL TAO_IDL Compiler PortableServer |
||||
SmartProxies | TAO DLL | ||||
Svc Utils | TAO DLL TAO_IDL Compiler PortableServer |
||||
TAO_IFR_BE_DLL | IFR_Service TAO_IDL_FE_DLL |
||||
TAO_Strategies | TAO DLL | ||||
Trading_Service | CosNaming CosTrading Svc Utils |
||||
TypeCodeFactory | IFR_Client | ||||
gperf | gperf_lib ACE DLL |
||||
tao_ifr | |||||
tao_imr |
次の1行を記述する。
#include "ace/config-win32.h"
もし、標準C++ヘッダ(<iostream>や<cstdio>など)を使うなら、上記#includeより前に以下の1行を記述する。
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
ACEをMFCと一緒に使用する場合、上記#includeより前に以下の1行を記述する。
#define ACE_HAS_MFC 1
#define ACE_HAS_MFC 1 #define ACE_HAS_STANDARD_CPP_LIBRARY 1 #include "ace/config-win32.h" |
Windowsでのサポートコンパイラは、MS VC++/BORLAND C++/IBM C++/MinGW32/Cygwin32のようだ。
スタティック版のACEライブラリを作るときには、ACE_AS_STATIC_LIBSを定義している。スタティック版のACEライブラリを使用するアプリケーションは、プロジェクト設定にACE_AS_STATIC_LIBSを定義する。
また、ACE_NO_INLINEをconfig.hファイルに定義することもできる。定義した場合、スタティックライブラリや実行ファイルのさじを減少させることができる。
#define ACE_NO_INLINE
環境変数名 | 設定内容 | 設定例(ACE+TAOをD:\project\tao以下に展開した場合 |
ACE_ROOT | ACEをインストールしたディレクトリ | D:\project\tao\ACE_wrappers |
TAO_ROOT | TAOをインストールしたディレクトリ | %ACE_ROOT%\TAO |
VC++でビルドする際にこれらの環境変数は必ずしも必要ではないが、ACE/TAOを利用するアプリケーションのプロジェクトファイルを構築する際に、ライブラリパスやインクルードパスを指定する記述に環境変数を使った方が望ましいので指定しておく。
以下のワークスペースは、ACEとTAOを一括したものである。
ACE_wrappers\TAO\TAOACE.dsw
これをVC++で開いてから、バッチビルドを実行する。途中いくつかエラーが出たりしてビルドできないものもあったが一通り終わった。ディスクは2.54GBを消費していた。(でかい!)
以下のワークスペースは、ACEとTAOのスタティックライブラリを構築するものである。
ACE_wrappers\TAO\TAOACE_static.dsw
ACE+TAOはとてつもなく大きく、ビルド時間も数時間を要する。そこで必要最小限のビルドをする。ビルドする対象は以下のとおり。
ACE_wrappers | ace | ||
apps | gperf | ||
TAO | tao | ||
TAO_IDL | |||
orbsvcs | orbsvcs |
また、orbsvcsディレクトリ下にあるCORBAサービスをすべてビルドすると時間がかかるので、必要とするサービスだけをビルドする。サービスを指定する方法は、
ACE用のプロジェクトファイルは以下である。
ACE_wrappers\ace\ace.dsw
この中には、次のビルドが設定されている。
ACE DLL Win32 | MFC Release | |
MFC Debug | ||
Release | ||
Debug | ||
ACE LIB Win32 | Pharlap ETS Static Release | 旧Phar Lap社のWin32ハードリアルタイムOS用 (ETS:Embedded ToolSuit) |
Pharlap ETS Static Debug | ||
Static Release | ||
Static Debug |
oenssl/xxx.hが見つからないため。これはACE_SSL/SSLIOPがOpenSSLというオープンソースなSSLのライブラリに依存しているため。ACE_SSLをビルドするなら、先にOpenSSLをインストールしておく必要がある。
OpenSSLがインストールされていなければインストールする。
ビルド時には、OpenSSLのインクルードパス/ライブラリパスを指定しておく必要がある。プロジェクトファイルに記述する方法とシステム全体(Visual
C++)で設定する方法がある。OpenSSLは、後述のインストールでコピーしたディレクトリの場合である。
設定項目 | 設定対象 | 設定個所 | 追加前 | 追加後 |
---|---|---|---|---|
インクルードファイルのパス | Win32 Release Win32 Debug |
[C/C++]タブのカテゴリ「プリプロセッサ」 |
../.. |
../..,d:/win32app/lib/openssl/include |
追加ライブラリのパス | [リンク]タブのカテゴリ「インプット」 |
なし |
d:/win32app/lib/openssl/lib |
設定項目 | 設定個所 | 追加内容 |
---|---|---|
インクルードファイルのパス | [ツール]→[オプション]→[ディレクトリ]タブ→インクルードファイル | d:\win32app\lib\openssl\include |
ライブラリのパス | [ツール]→[オプション]→[ディレクトリ]タブ→ライブラリファイル | d:\win32app\lib\openssl\lib |
OpenSSLはオープンソースとして公開されているので、ソースが入手できる。2003年1月28日現在Ver.0.9.7が最新。インストール方法をGoogleってみると、いくつか見つかった。手っ取り早いのは、バイナリを入れることだろう。
Microsoft Assemblerは現在DDKに含まれている。前は無償でダウンロードできたが、今はCDを注文する必要がある。費用は送料のみで$25。
ActivePerlがインストールされていなければ、まずActivePerlをインストールする。左上のDownloadのロゴをクリックすると登録ページになる。Register情報に何か入れて(入れなくても可)次へ進むとダウンロードページになる。2003年1月28日現在、Ver.5.8.0 build 804が最新。
F:\work\openssl-0.9.7>perl Configure VC-WIN32 Configuring for VC-WIN32 : [中略] Configured for VC-WIN32. F:\work\openssl-0.9.7>
次に、アセンブラを使うか使わないかで実行するコマンドが変わる。アセンブラを使うと処理速度が速くなるとある。RSAだと2倍だそうな。
ここではアセンブラがないのでとりあえずms\do_msを実行する。
F:\work\openssl-0.9.7>ms\do_ms : [中略] F:\work\openssl-0.9.7>
nmakeを実行するので、VC++コマンドライン環境の設定をしておく。%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\VCVARS32.BATを実行すれば設定される。
F:\work\openssl-0.9.7>"%ProgramFiles%\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT" Setting environment for using Microsoft Visual C++ tools. F:\work\openssl-0.9.7>nmake -f ms\ntdll.mak : [中略] F:\work\openssl-0.9.7>
生成物をテストするなら以下のように。passed all testsと表示されればOKと思われる。
F:\work\openssl-0.9.7>cd out32dll F:\work\openssl-0.9.7\out32dll>test ..\ms\test : [中略] passed all tests F:\work\openssl-0.9.7\out32dll>
インクルードファイル、ライブラリファイル、実行コマンドファイル等をインストールしたい場所にコピーする。気の利いたインストーラなぞはないので、自力でコピーする。ここでは、D:\win32app\lib\opensslの中にコピーする。
F:\work\openssl-0.9.7\out32dll>cd .. F:\work\openssl-0.9.7>md d:\win32app\lib\openssl F:\work\openssl-0.9.7>md d:\win32app\lib\openssl\bin F:\work\openssl-0.9.7>md d:\win32app\lib\openssl\lib F:\work\openssl-0.9.7>md d:\win32app\lib\openssl\include F:\work\openssl-0.9.7>md d:\win32app\lib\openssl\include\openssl F:\work\openssl-0.9.7>copy /b inc32\openssl\* d:\win32app\lib\openssl\include\openssl F:\work\openssl-0.9.7>copy /b out32dll\ssleay32.lib d:\win32app\lib\openssl\lib F:\work\openssl-0.9.7>copy /b out32dll\libeay32.lib d:\win32app\lib\openssl\lib F:\work\openssl-0.9.7>copy /b out32dll\ssleay32.dll d:\win32app\lib\openssl\bin F:\work\openssl-0.9.7>copy /b out32dll\libeay32.dll d:\win32app\lib\openssl\bin F:\work\openssl-0.9.7>copy /b out32dll\openssl.exe d:\win32app\lib\openssl\bin F:\work\openssl-0.9.7>
上記の手順で作成しコピーしたバイナリ一式はこれです。(以下のスタティック版は含まれていない)
もし、スタティックリンク版のライブラリが必要な場合には以下のようにビルドします。
F:\work\openssl-0.9.7>nmake -f ms\nt.mak : [中略] F:\work\openssl-0.9.7>
DLL版と同じ実行ファイル名、.libファイル名が生成されるので、ファイルのコピー先は分けた方がよいでしょう。
F:\work\openssl-0.9.7>md d:\win32app\lib\openssl\sbin F:\work\openssl-0.9.7>md d:\win32app\lib\openssl\slib F:\work\openssl-0.9.7>copy /b out32\ssleay32.lib d:\win32app\lib\openssl\slib F:\work\openssl-0.9.7>copy /b out32\libeay32.lib d:\win32app\lib\openssl\slib F:\work\openssl-0.9.7>copy /b out32\openssl.exe d:\win32app\lib\openssl\sbin F:\work\openssl-0.9.7>
いくつかのプロジェクトで、TAO_IDLコンパイラを起動しようとするがエラーが発生する。いずれもDebugビルドではTAO_IDLコンパイラ起動に成功している。
CosLifeCycle - Win32 Release
PortableGroup - Win32 Release
CosNotification - Win32 Release
CosTime - Win32 Release
DsLogAdmin - Win32 Release
RTSched - Win32 Release
FT ORB - Win32 Release
Fault Tolerance - Win32 Release
RTEventLog - Win32 Release
Security - Win32 Release
Releaseビルドのときに呼び出されるtao_idl.exeは%ACE_ROOT%\bin\releaseにあるが、TAO_IDL_BE_DLL.dllは%ACE_ROOT%\binにある。%ACE_ROOT%\binには環境変数PATHは通っていない。
%ACE_ROOT%\docs\msvc_notes.txt に解決方法が記載されている。いくつか方法があるが、環境変数PATHに%ACE_ROOT%\binを追加する方法と、Visual
C++の[ツール]→[オプション]→[ディレクトリ]タブで[実行可能ファイル]の[ディレクトリ・リスト]に%ACE_ROOT%\binを追加する方法がある。後者の場合(環境変数を含めたディレクトリを追加する方法がよく分からないので絶対パスで記述した。
なお、同様にインクルードパスとしてACE用ヘッダ(%ACE_ROOT%)、TAO用ヘッダ(%TAO_ROOT%)、CORBAサービス用ヘッダ(%TAO_ROOT%\orbsvcs)を[インクルードファイル]の[ディレクトリ・リスト]に追加するとよい。
同じくライブラリパスとして%ACE_ROOT%\binを[ライブラリファイル]の[ディレクトリ・リスト]に追加するとよい。
AV - Win32 MFC Debug
AV - Win32 MFC Release
ACE_QoSのプロジェクトファイルを見ると、Win32 Debug/Win32 Releaseのみで、MFC対応版の設定がない。
タイプライブラリを作成中、PortableGroup.idlがインクルードしているCosNaming.idlが見つからないため、midl.exeの実行エラーが生じている。
PortableGroup - Win32 MFC Debug
PortableGroup - Win32 MFC Release
CosNotification - Win32 MFC Debug
CosNotification - Win32 MFC Release
ETCLのプロジェクトファイルを見ると、Win32 Debug/Win32 Releaseのみで、MFC対応版の設定がない。
DsLogAdmin - Win32 MFC Debug
DsLogAdmin - Win32 MFC Release
afxver_.hでC1189: _AFXDLLのビルドには/MDスイッチを使え、というエラーが出ている。
DsEventLogAdmin - Win32 Release
RTSchedEvent - Win32 Release
IFRService - Win32 MFC Debug
IFRService - Win32 MFC Release
RTCORBAEvent - Win32 Release
RTCORBAEvent - Win32 MFC Debug
RTCORBAEvent - Win32 MFC Release
ビルド直後は、ソースコード、ヘッダファイル、各種プロジェクトファイル、コンパイラ中間生成ファイル、ライブラリファイル、実行ファイルなどが同じディレクトリツリーに混在したままとなっている。ここから必要なものだけ抜き出したいのが人情だが、現在のACE+TAOはこの点が考慮されていない。例えばヘッダファイルをとってみても、ACEを利用するアプリケーションに公開するヘッダファイルなのかACEライブラリ自身をビルドする際に使用するヘッダファイルなのか識別は困難である。以下試行錯誤の経過を記す。
ビルド後のACE関連ファイルから、ACEを利用するアプリケーションに必要なファイルだけを取り出す。ソースツリーの中に以下のように展開されている。
ACE_wrappers +--- ace | +--- *.h / *.i / *.cpp ヘッダファイル、インライン展開ファイル、ソースファイル +--- bin | +--- *.dll :
これを、以下のディレクトリへ展開する。
d:\win32app\lib\ace +--- bin | +--- ace.dll ACE Release版 DLL | +--- aced.dll ACE Debug版 DLL | +--- acemfc.dll ACE with MFC Release版 DLL | +--- acemfcd.dll ACE with MFC Debug版 DLL +--- lib | +--- ace.lib ACE Release版 DLL用インポートライブラリ | +--- aced.lib ACE Debug版 DLL用インポートライブラリ | +--- acemfc.lib ACE with MFC Release版 DLL用インポートライブラリ | +--- acemfcd.lib ACE with MFC Debug版 DLL用インポートライブラリ | +--- aces.lib ACE Release版 スタティックリンクライブラリ | +--- acesd.lib ACE Debug版 スタティックリンクライブラリ +--- include +--- ace +--- ACE.h +--- ACE.i +--- ACE_export.h +--- Addr.h +--- Addr.i +--- Basic_Types.h +--- Basic_Types.i +--- Default_Constants.h +--- Flag_Manip.h +--- Flag_Manip.i +--- Global_Macros.h +--- Handle_Ops.h +--- Handle_Ops.i +--- INET_Addr.h +--- INET_Addr.i +--- Init_ACE.h +--- Init_ACE.i +--- IPC_SAP.h +--- IPC_SAP.i +--- Lib_Find.h +--- Lib_Find.i +--- Log_Msg.h +--- Log_Priority.h +--- Managed_Object.cpp +--- Managed_Object.h +--- Managed_Object.i +--- Min_Max.h +--- Object_Manager.h +--- Object_Manager.i +--- OS.h +--- OS.i +--- OS_Dirent.h +--- OS_Dirent.inl +--- OS_Errno.h +--- OS_Errno.inl +--- OS_Export.h +--- OS_Log_Msg_Attributes.h +--- OS_Log_Msg_Attributes.inl +--- OS_Memory.h +--- OS_Memory.inl +--- OS_String.h +--- OS_String.inl +--- OS_TLI.h +--- OS_TLI.inl +--- SOCK.h +--- SOCK.i +--- SOCK_Acceptor.h +--- SOCK_Acceptor.i +--- SOCK_Connect.h +--- SOCK_Connect.i +--- SOCK_Connector.h +--- SOCK_Connector.i +--- SOCK_Dgram.h +--- SOCK_Dgram.i +--- SOCK_IO.h +--- SOCK_IO.i +--- SOCK_Stream.h +--- SOCK_Stream.i +--- Time_Value.h +--- Time_Value.inl +--- Trace.h +--- ace_wchar.h +--- ace_wchar.inl +--- config-all.h +--- config-win32-common.h +--- config-win32-msvc-6.h +--- config-win32-msvc.h +--- config-win32.h +--- config.h +--- post.h +--- pre.h +--- streams.h :
OCI版TAOのページより、以下のファイルをダウンロードする。
の3種類がある。
#include "ace/config-win32.h"
フルにビルドすると、ディスク容量として約1.4GBを必要とする。そこで、TAOを利用するアプリケーションにとって必要なファイルのみを入れる方法を検討する。
まず、コンパイル中間ファイルを削除する。Visual C++の中間ファイルは、*.obj *.pch vc60.idb vc60.pdbなどである。Cygwinをいれていれば、findコマンドで簡単に削除できる。
$ find ACE_wrappers -type f \( -name "*.obj" -o -name "*.pch" -o -name "vc60.*" -o -name "*.ilk" -o -name "*.map" \) -print|xargs rm $
この結果、ディレクトリサイズは、546MBに削減された。
必要なファイルだけを別ディレクトリに切り出してみる。
ACE_Wrappers +------ ace | |