このセクションでは、C++test を使って「Wind River Tornado コンパイラを使ってコンパイル/ビルドされるコード」および「Wind River Tornado IDE を利用して作成されるコード」をテストする方法について説明します。このセクションでカバーする内容は、「Tornado のサポートに特化した C++test の機能」と「C++test でテストを行うにあたって知っておくべき Tornado の機能」です。C++test の全般的な機能については、本ユーザーズ ガイドの他のセクションを参照してください。
このセクションの内容:
概要
C++test スタンドアロン版および C++test Eclipse プラグイン版では、Tornado を利用できます。特別な統合は必要ありません。
C++test が Tornado 開発環境と実際に「統合」するわけではありません。C++test は、Tornado のコンパイラをサポートするようにあらかじめ構成されているため、C++test プロジェクトで Tornado コンパイラを使用できるほか、完全な Tornado プロジェクトを C++test ワークスペースにインポートできます。
サポートされる Tornado のバージョンとコンパイラ
C++test は Tornado 2.0 および 2.2 をサポートします。どちらのバージョンにもそれぞれ独自のコンパイラが付属しています。
- Tornado-2.0 には、 GNU EGCS クローン (egcs-2.90) が含まれます。
- Tornado-2.2 には、GNU GCC クローン (gcc-2.96) および Wind River 独自の DIAB コンパイラ (dcc Rel 5.0) が含まれます。
次の表は、Tornado に付属のコンパイラ、C++test でのコンパイラの種類名、および構成名の詳細です。
Tornado のバージョン | Tornado に 付属のコンパイラ | C++test でのコンパイラの種類の名前 | C++test での構成名 |
---|---|---|---|
2.0 | egcs-2.90 | Wind River EGCS 2.9 | wregcs_2_9 |
2.2 | gcc-2.96 DIAB-5.0** | Wind River GCC 2.9 Wind River Diab 5.0 ** | wrgcc_2_9 diab_5_0 |
*構成名は、C++test コンパイラのメイン構成ディレクトリのサブ ディレクトリ名であり、ここにコンパイラのコンフィギュレーション データが格納されます。デフォルトは C++test_install_dir/engine/etc/compilers/config_name です。
** または DIAB 5.0.1 以上
付属の VxWorks のバージョンは次のとおりです。
- Tornado-2.0: VxWorks-5.4 (C++test のサポートは非推奨です)
- Tornado-2.2: VxWorks-5.5 (C++test のサポートは非推奨です)
要件
C++test 自体の要件には標準的な規則が適用されます。スタンドアロン版の場合、拡張は必要ありません。CDT (C++ Development Tools) はすでに含まれています。Eclipse プラグイン版の場合は、CDT を Eclipse にインストールする必要があります。詳細については 「インストール」 を参照してください。
Tornado コンパイラを使ってテストするには、次の特別な Tornado 環境変数を「C++test を起動する前に」設定する必要があります ( Tornado 開発環境が適切にインストールされているか、1 つ以上の Tornado コンパイラが他の何らかの手段によってインストールされていることを前提とします。)
- WIND_BASE Tornado インストール ディレクトリ。たとえば: C:\Tornado
- WIND_HOST_TYPE GNU ツール チェーン用に Tornado がインストールされているマシンのホスト タイプ。現在サポートされているのは x86-win32 だけです。
- DIABLIB DIAB インストール ディレクトリ。ほとんどの場合、これは %WIND_BASE%\host\diab です。この変数は、Tornado-2.2 を所有していて DIAB コンパイラを使ってテストを実行したい場合にだけ必要です。
- DIAB_HOST_TYPE - DIAB ツール チェーン用に Tornade がインストールされているマシンのホスト タイプ。現在サポートされているのは WIN32 だけです (DIAB コンパイラでテストを行う場合のみ)。
また、Tornado 実行モジュールを PATH 変数にセットすることも推奨します。例:
"set PATH=%WIND_BASE%\host\%WIND_HOST_TYPE%\bin;%PATH%"
"set PATH=%DIABLIB%\WIN32\bin;%PATH%"
Tornado に付属のバッチ スクリプト (%WIND_BASE%\host\%WIND_HOST_TYPE%\bin\torVars.bat
) は、推奨される環境の初期化をすべて実行します。 POSIX のようなシェルから C++test を実行すると、torVars.bat
に基づいたシェル スクリプトを作成できます。
静的解析の場合、環境を設定するだけで十分です。単体テストの場合は次のツールも必要です。詳細については 「テスト オブジェクトの実行 」 を参照してください。
- Tornado Registry (wtxregd)
- Target Server (tgtsvr)
- Tornado Shell (windsh)
既知の制限事項
C++test の制限事項
- Tornado のテストをサポートするのは、Eclipse ベースの C++test (スタンドアロンおよびプラグイン) だけです。
- Windows プラットフォーム対応の Tornado だけを正式にサポートします。
- VxWorks バージョン 5.4 および 5.5 のサポートは非推奨です。より新しいバージョンのテストはサポートされますが、Wind River Tornado 環境ではサポートされません。
- VxSim 以外のプラットフォームでテストを行うには、マングリング スキームを変更する必要があります。詳細については 「マングリングの問題の回避」を参照してください。
- DIAB コンパイラを使用した場合、例外のキャッチに関する問題が発生する可能性があります。
Tornado ツールの制限事項
- Tornado-2.0 の wregcs-2.9 コンパイラは名前空間および using ディレクティブをサポートしません (ただし "using namespace std;" を除きます)。
- wregcs-2.9 pプリプロセッサは、スペースを含む include パスを受け付けません。この問題を防ぐには、スペースを含むディレクトリ (たとえば Program Files など) に C++test をインストールしないでください。
- Tornado の古い make-3.74 には、今日の標準の maikefile のパースを妨げる数多くの制限事項があります (「 make ツールの差異と -i / -B オプション 」 を参照)。したがって、C++test Runtime ライブラリの makefile ( 「 C++test ランタイム ライブラリのビルド」 ) をそれに特別に合わせる必要があります。 この make を PATH に設定した場合、Tornado ではないプロジェクトのビルドで問題が起こる可能性があります。結果として、Tornado ツールだけを使用するときに限って Tornado 環境を設定するのが最善の方法です。
VxWorks-5.4 & VxWorks-5.5 の制限事項
- 標準ライブラリは long long 型も long double 型もサポートしません。さらに、あらゆる strtoll ルーチン、strtold ルーチンおよび printf 関連ルーチンの%lld と %llu フォーマット文字列もサポートしません。
- VxWorks-5.5 シミュレーターのデフォルトのビルド (%WIND_BASE%\target\config\simpc\vxWorks.exe; Tornado-2.2) の C++ 機能は、デフォルトのモードでは C++test のインストゥルメンテーション要件を満たしていません。そのため、C++ 言語のコードをテストするには、次のいずれかを行う必要があります。VxWorks-5.4 (Tornade-2.0) にはこの問題はありません。
C++test サポートを拡張した独自の VxSim イメージをビルドする。最低でも、複素数を除くすべての C++ 機能を使用することを推奨します。
プロジェクトのコンパイラ フラグに -DCPPTEST_SPECIAL_STD_EXCEPTIONS_HANDLING_ENABLED=0 の定義を追加する。
マングリングの問題の回避
Tornado の GNU ツール チェーンは、VxSim シミュレーターとその他のプラットフォームでは、異なるマングリング スキームを使用します。VxSim のマングリング スキームは、Microsoft/Windows/Cygwin との互換性のために、C のシンボルの前に付加的なアンダースコアが追加されるという違いや、複雑な C++ マングリングにおけるその他の違いがあります。
C++test では、VxSim のマングリング スキームは gcc-cygwin (C 言語) または g++2-cygwin (C++ 言語) と呼ばれます。その他のプラットフォームのスキームは gcc または g++2 です。C++test の初期設定では、VxSim に対応するように構成されており、現時点ではマングリング スキームを自動的に変更することはできません。そのため、VxSim 以外のプラットフォームを使用する場合は、手動でマングリング スキームを変更する必要があります。
手動でマングリング スキームを変更するには、次の 2 つの方法があります。
- C++test のプロジェクト プロパティ パネルの [その他の設定] > [詳細オプション] エリアで、 symmatcher.manglingSchema Advanced Project Option を設定し、C 言語のみのプロジェクトに対しては gcc を設定し、C++ 言語のみのプロジェクトに対しては g++2 を指定する。
- wregcs-2.9/wrgcc-2.9 コンフィギュレーションを複製してカスタム コンパイラを作成し、スキームを変更したものをプロジェクトで使用する。
2 番目の方法でスキームを変更するための手順は次のとおりです。
- [ファイル] メニューの [新規] > [その他] をクリックします。
- [C++test] > [カスタム コンパイラ] を選択し、[次へ] ボタンをクリックします。
- [カスタム コンパイラの追加] を選択し、[次へ] ボタンをクリックします。
- 次の操作を行って、カスタム コンパイラを設定します。
- コンパイラの名前を入力します。
- [コンパイラの種類] ドロップダウン リストから [Wind River EGCS 2.9] または [Wind River GCC 2.9] を選択します。
- 正しいコンパイラ/リンカー 実行可能ファイルを指定します。
- コンパイラ識別子に任意の変更を加えます (コンフィギュレーションを共有する場合など)。[次へ] ボタンをクリックします。
- 下の 3 つのテキスト ボックスにコンパイラ コンフィギュレーション ファイルが作成される場所を指定し、[完了] ボタンをクリックします。
- 外部的なファイル システム ナビゲーターで、指定した場所を開きます。
- c.psrc ファイルに symmatcher.manglingSchema gcc を追加します。
- cpp.psrc ファイルに symmatcher.manglingSchema g++2 を追加します。
- ファイルを保存します。
- C++test に変更を適用し、再起動します。
- あるいは、C++test メニューの [設定] > [コンフィギュレーション] > [カスタム ディレクトリ] > [カスタム コンパイラ] で場所を変更した場合、オプションをいったんオフにして [適用] をクリックし、再びオンにして [OK] をクリックします。
- C++test プロジェクト プロパティ パネルの [ビルド設定] > [コンパイラ設定] > [種類] で新しく作成したコンパイラ コンフィギュレーションを選択します。