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

TAO1.6.x Windows VC++ 2008 Expressインストール記録

TAO 1.6.2からVisual Studio 2008対応となりました。

ACE+TAO+CIAO-5.6.5 (TAO 1.6.5) を、Windows Vista OS上でVisual C++ 2008 Expressコンパイラを使ってビルドしインストールした記録です。

ビルドの準備

ソースコードの展開

作業用ディレクトリに入手したソースコードのアーカイブを解凍ツールを使って展開します。

ACE+TAO+CIAO-5.6.5.tar.bz2

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

F:\tmp> dir /b
ACE_wrappers
F:\tmp> 

プロジェクト設定ファイルの生成に使用するPerl実行環境の準備

展開された内容にデフォルトで入っているVisual C++ 2008用のプロジェクトファイルは、IPv6設定が無効となっています。そこで、同梱のMPCツールを使ってVisual C++ 2008(vc9)用ソリューションファイルを生成して、これを用いてビルドします。

MPCツールはPerlで記述されているので、Perlをインストールする必要があります。Windows OSの場合、Cygwinを使用するかActive Perlを使用するかの方法がメジャーです。どちらも無償で入手できます。

ビルド実施記録

1. config.hの編集

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

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

#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x600
#endif /* _WIN32_WINNT */

#define ACE_HAS_IPV6 1
#include "ace/config-win32.h"

#endif /* ACE_CONFIG_H */

_WIN32_WINNTはデフォルトでは0x0501(Windows XP/2003)に定義されます。必要に応じてOSのバージョンに合わせて定義します。MSDNドキュメント参照。以下の表はMSDNより。

OS _WIN32_WINNT定義値
Windows 2000 0x0500
Windows XP
Windows Server 2003
0x0501
Windows XP SP2
Windows Server 2003 SP1
0x0502
Windows Vista
Windows Server 2008
0x0600

VC++ 2008の設定ファイル(ace/config-win32-msvc-9.h)のデフォルトで以下が定義されています。

ACE_WIN32_VC9
ACE_HAS_STANDARD_CPP_LIBRARY 1
ACE_USES_STD_NAMESPACE_FOR STDCPP_LIB 1
ACE_HAS_TIME_T_LONG_MISMATCH
ACE_HAS_ITOA
ACE_HAS_HEADER_ALLOCATED_CLASS_STATIC_CONST_INT_STOREAGE
ACE_HAS_WORKING_EXPLICIT_TEMPLATE_DESTRUCTOR
ACE_HAS_EXCEPTIONS
ACE_HAS_SIG_ATOMIC_T
ACE_HAS_STRERROR
ACE_LACKS_STRPTIME
ACE_HAS_INTRIN_H
ACE_HAS_INTRINSIC_INTERLOCKED
ACE_HAS_INTRINSIC_BYTESWAP
ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES
ACE_LACKS_STRRECVFD
ACE_HAS_CPLUSPLUS_HEADERS
ACE_HAS_TEMPLATE_TYPEDEFS
ACE_TEMPLATES_REQUIRE_SOURCE
ACE_HAS_TEMPLATE_SPECIALIZATION
ACE_HAS_TLI_PROTOTYPES
ACE_LACKS_LINEBUFFERED_STREAMBUF
ACE_LACKS_ACE_IOSTREAM
ACE_NEW_THROWS_EXCEPTIONS
ACE_HAS_NEW_THROW
ACE_HAS_TR24731_2005_CRT
ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
ACE_NEEDS_FUNC_DEFINITIONS
#pragma warning(disable:4231)
#pragma warning(disable:4250)

IPv6を有効にする

IPv6については、ACEおよびTAOのソースコード中ではマクロ定義ACE_HAS_IPV6を使って制御しています。そこで、config.hでこのマクロ定義を有効にします。

また、後述するvc9.featuresにも、ipv6=1 の記述を追加する必要があります。IPv6に必要なライブラリのリンクが追加されます。

2. platform_macros.GNUの編集

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

3. コンパイル・リンク

ACEとTAOを一緒にビルドする場合の設定

TAO/TAOACE.mwcからmpcツールを使って必要なVisual Studio用プロジェクトファイルを生成します。

SSLを有効にする場合、ACE_wrappers\bin\MakeProjectCreator\config\vc9.features ファイルのssl行を1に修正します。
VC++ 2008β2でコンパイルするとOpenSSLのAPI呼び出し時に引数の型変換エラーが発生します。対処方法が見出されるまではssl=0としたままの方がよいでしょう。

IPv6を使用するときは、ipv6=1を追記します。

ACE_wrappers\bin\MakeProjectCreator\config\vc9.featuresの記述
// $Id: vc9.features 80083 2007-11-23 19:52:07Z johnnyw $

ssl=0
qos=1
cidl=0
rwho=0
sctp=0
ipv6=1

SSLを有効にする場合、OpenSSLをインストールしたディレクトリを、環境変数SSL_ROOTに設定します。コマンドプロンプトで設定します。OpenSSLのインストールについてはこちらを参照。

注意) Shining Light ProductionsのWindows版バイナリは、SSLのライブラリファイル名が標準とは異なるため、デフォルトのACE_TAOワークスペースの設定ではACEのSSLビルドが失敗します。

F:\tmp\ACE_wrappers> set SSL_ROOT=D:\lib\openssl
F:\tmp\ACE_wrappers>

環境変数ACE_ROOTとTAO_ROOTを設定します。

F:\tmp\ACE_wrappers> set ACE_ROOT=F:\tmp\ACE_wrappers
F:\tmp\ACE_wrappers> set TAO_ROOT=%ACE_ROOT%\TAO
F:\tmp\ACE_wrappers> 

注意) 環境変数の設定中にダブルクォーテーションが含まれるとPerlの処理で失敗します。(例:”F:\tmp\ACE_wrappers")

環境変数PATHに追加設定します。

F:\tmp\ACE_wrappers> PATH=%PATH%;%ACE_ROOT%\bin
F:\tmp\ACE_wrappers> 

[Cygwin環境のPerlを使用する場合]CygwinへのPATHを通します。

F:\tmp\ACE_wrappers> PATH=%PATH%;C:\cygwin\bin
F:\tmp\ACE_wrappers> 

MPCツールでVC++ 2008用のプロジェクトファイルを生成します。

[ActivePerlを使用する場合]

F:\tmp\ACE_wrappers> cd TAO
F:\tmp\ACE_wrappers\TAO> perl ..\bin\mwc.pl -type vc9 -genins TAO_ACE.mwc
Using .../TAO/ACE_wrappers/bin/MakeProjectCreator/config/MPC.cfg
Generating 'vc9' output using TAO_ACE.mwc
Skipping SSL_FOR_TAO (ssl_for_tao.mpc), it requires ssl.
Skipping SSL (ssl.mpc), it requires ssl.
Skipping ACE_XtReactor (ace_xtreactor.mpc), it requires xt.
Skipping ACE_TkReactor (ace_tkreactor.mpc), it requires tk.
Skipping ACE_QtReactor (ace_qtreactor.mpc), it requires qt.
Skipping ACE_FoxReactor (ace_foxreactor.mpc), it requires fox.
Skipping ACE_FOR_TAO (ace_for_tao.mpc), it requires ace_for_tao.
Skipping ACE_FlReactor (ace_flreactor.mpc), it requires fl.
Skipping ZlibCompressor (ZlibCompressor.mpc), it requires zlib.
Skipping TAO_XtResource (XtResource.mpc), it requires xt.
Skipping TAO_TkResource (TkResource.mpc), it requires tk.
Skipping TAO_QtResource (QtResource.mpc), it requires qt.
Skipping TAO_FoxResource (FoxResource.mpc), it requires fox.
Skipping TAO_FlResource (FlResource.mpc), it requires fl.
Skipping wxNamingViewer (wxNamingViewer.mpc), it requires wxWindows.
Skipping NamingViewer (NamingViewer.mpc), it requires mfc.
Skipping PSDL (PSDL.mpc), it requires dummy_label.
Skipping PSDL_Datastore (PSDL.mpc), it requires dummy_label.
Skipping PSDL_Parser (PSDL.mpc), it requires dummy_label.
Skipping SSLIOP (SSLIOP.mpc), it requires ssl.
Skipping RTCosScheduling (RTCosScheduling.mpc), it requires dummy_label.
Generation Time: 3m 28s

F:\tmp\ACE_wrappers\TAO> 

VC++2008用プロジェクトファイル TAO_ACE.sln が生成されます。

また、インストール・スクリプト用ファイルを生成するため、-geninsオプションを指定してます。

Visual Studio統合環境を起動したときに、統合環境が環境変数ACE_ROOTやSSL_ROOTを参照できるためには、システムで環境変数を設定するか、環境変数を設定したコマンドプロンプトから統合環境を起動します。ここでは、コマンドプロンプトからVisualStudio統合環境を起動します。

F:\tmp\ACE_wrappers\TAO> "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\
bin\vcvars32.bat"
    :
F:\tmp\ACE_wrappers\TAO> vcexpress /useenv
F:\tmp\ACE_wrappers\TAO>

Visual Studio .NET 2008統合環境が起動するので、[ファイル]メニューの[開く]→[プロジェクト/ソリューション]で、ACE_wrappers\TAO\TAO_ACE.slnファイルを開きます。

[ビルド]メニューの[バッチビルド]を選択し、バッチビルドダイアログで[すべて選択(S)]ボタンを押し、[ビルド]ボタンを押します。

ビルド結果生成されるバイナリの一覧はここ

4. インストール

インストール・スクリプトを実行します。

ヘッダーファイル、インラインファイル、IDLファイル、テンプレートファイルのインストール

F:\tmp\ACE_wrappers>perl MPC\prj_install.pl -v d:/lib/tao .
   :

ライブラリファイルのインストール

F:\tmp\ACE_wrappers>perl MPC\prj_install.pl -a lib_output -v d:/lib/tao .

実行ファイルのインストール

F:\tmp\ACE_wrappers>perl MPC\prj_install.pl -a exe_output -v d:/lib/tao .

MPCツールのコピー

F:\tmp\ACE_wrappers> copy bin\depgen.pl d:\lib\tao\bin
F:\tmp\ACE_wrappers> copy bin\mpc.pl d:\lib\tao\bin
F:\tmp\ACE_wrappers> copy bin\mwc.pl d:\lib\tao\bin
F:\tmp\ACE_wrappers> robocopy bin\MakeProjectCreator d:\lib\tao\bin\MakeProjectCreator /E
F:\tmp\ACE_wrappers> robocopy MPC d:\lib\tao\MPC
F:\tmp\ACE_wrappers> 
bin/mpc.plとMPC/mpc.plは同じファイル名ながら内容が異なっています。ACE/TAOプロジェクト生成時は、bin/mpc.plを使用します。

CIAO

DDS

VC++環境設定

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

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

環境変数

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

そこで、ACEおよびTAOをインストールしたディレクトリに合わせてこれらの環境変数を再設定します。

環境変数名 設定方法 設定内容
ACE_ROOT 新規
D:\lib\tao
TAO_ROOT 新規
%ACE_ROOT%\TAO
CIAO_ROOT 新規
%ACE_ROOT%\TAO\CIAO
DDS_ROOT 新規
%ACE_ROOT%\TAO\DDS
PATH 追加
%ACE_ROOT%\binを追加する
%CIAO_ROOT%\binを追加する
%DDS_ROOT%\binを追加する
ツールオプション

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

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