ここでは、「Wind River Tornado コンパイラを使ってコンパイル/ビルドされるコード」および「Wind River Tornado IDE を利用して作成されるコード」について C/C++test でテストする方法について説明します。このセクションでカバーする内容は、「Tornado のサポートに特化した C/C++test の機能」と「C/C++test でテストを行うにあたって知っておくべき Tornado の機能」です。C/C++test の全般的な機能については、本ユーザーズ ガイドの他のセクションを参照してください。

サポートの概要

C/C++test スタンドアロン版と C/C++test Eclipse プラグイン版の両方で、Tornado と C/C++test を連携して使用することができます。C/C++test の Tornado のサポートには Tornado 開発環境との統合は含まれないため、特別な統合は必要ありません。C/C++test は、Tornado のコンパイラをサポートするようにあらかじめ構成されているため、C/C++test プロジェクトで Tornado コンパイラを使用できるほか、完全な Tornado プロジェクトを C/C++test ワークスペースにインポートできます。

サポートされる Tornado のバージョンとコンパイラ

C/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/C++test でのコンパイラの種類名、および構成名の詳細です。


Tornado のバージョンTornado に付属のコンパイラC++test でのコンパイラの種類の名前C++test での構成名
2.0egcs-2.90Wind River EGCS 2.9wregcs_2_9
2.2gcc-2.96, DIAB-5.0**Wind River GCC 2.9, Wind River Diab 5.0**wrgcc_2_9 , diab_5_0


*構成名は、C/C++test コンパイラのメイン構成ディレクトリのサブ ディレクトリ名であり、ここにコンパイラのコンフィギュレーション データが格納されます。デフォルトは <INSTALL_DIR>/bin/engine/etc/compilers です。

** または DIAB 5.0.1 以上

付属の VxWorks のバージョンは次のとおりです。

  • Tornado-2.0: VxWorks-5.4 (C++test のサポートは非推奨です)
  • Tornado-2.2: VxWorks-5.5 (C++test のサポートは非推奨です)

要件

C/C++test 自体には、通常の稼動要件が適用されます。スタンドアロン版の場合、拡張は必要ありません。CDT (C++ Development Tools) はすでに含まれています。Eclipse プラグイン版の場合は、CDT を Eclipse にインストールする必要があります。詳細については 「インストール」 を参照してください。

Tornado コンパイラを使ってテストするには、次の特別な Tornado 環境変数を「C/C++test を起動する前に」設定する必要があります (Tornado 開発環境が適切にインストールされているか、1 つ以上の Tornado コンパイラが他の何らかの手段によってインストールされていることを前提とします。)

  • WIND_BASE: Tornade のインストール ディレクトリです。たとえば: C:\Tornado
  • WIND_HOST_TYPE: GNU ツール チェーン用に Tornado がインストールされているマシンのホスト タイプ。現在サポートされているのは x86-win32 だけです。
  • DIABLIB - The DIAB インストール ディレクトリ。ほとんどの場合、これは %WIND_BASE%\host\diab です。この変数は、Tornado-2.2 を所有していて DIAB コンパイラを使ってテストを実行したい場合にだけ必要です。
  • DIAB_HOST_TYPE - ツール チェーン用に 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/C++test を実行すると、torVars.bat に基づいたシェル スクリプトを作成できます。

静的解析を行う場合は、環境を設定するだけで十分です。単体テストの場合は次のツールも必要です。詳細については 「テスト オブジェクトの実行」 を参照してください。

  • Tornado Registry (wtxregd)
  • Target Server (tgtsvr)
  • Tornado Shell (windsh)

既知の制限事項

C/C++test の制限事項

  • Tornado のテストをサポートするのは、Eclipse ベースの C/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/C++test をインストールしないでください。
  • Tornado の古い make-3.74 には、今日の標準の maikefile のパースを妨げる数多くの制限事項があります (「make ツールの差異と -i / -B オプション」 を参照)。したがって、C/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++ 機能は、デフォルトのモードでは C/C++test のインストゥルメンテーション要件を満たしていません。そのため、C++ 言語のコードをテストするには、次のいずれかを行う必要があります。 C++test サポートを拡張した独自の VxSim イメージをビルドする。最低でも、複素数を除くすべての C++ 機能を使用することを推奨します。 プロジェクトのコンパイラ フラグに -DCPPTEST_SPECIAL_STD_EXCEPTIONS_HANDLING_ENABLED=0 の定義を追加する。 VxWorks-5.4 (Tornade-2.0) にはこの問題はありません。

マングリングの問題の回避

Tornado の GNU ツール チェーンは、VxSim シミュレーターとその他のプラットフォームでは、異なるマングリング スキームを使用します。VxSim のマングリング スキームは、Microsoft/Windows/Cygwin との互換性のために、C のシンボルの前に付加的なアンダースコアが追加されるという違いや、複雑な C++ マングリングにおけるその他の違いがあります。

C++test では、VxSim のマングリング スキームは gcc-cygwin (C 言語) または g++2-cygwin (C++ 言語) と呼ばれます。その他のプラットフォームのスキームは gcc または g++2 です。C/C++test の初期設定では、VxSim に対応するように構成されており、現時点ではマングリング スキームを自動的に変更することはできません。そのため、VxSim 以外のプラットフォームを使用する場合は、手動でマングリング スキームを変更する必要があります。

手動でマングリング スキームを変更するには、次の 2 つの方法があります。

  • C/C++test のプロジェクト プロパティ パネルの [その他の設定] > [詳細オプション] エリアで、 symmatcher.manglingSchema Advanced Project Option を設定し、C 言語のみのプロジェクトに対しては gcc を設定し、C++ 言語のみのプロジェクトに対しては g++2 を指定する。このソリューションは、C/C++ 混合プロジェクトには適用できません。
  • wregcs-2.9/wrgcc-2.9 コンフィギュレーションを複製してカスタム コンパイラを作成し、スキームを変更したものをプロジェクトで使用する。

2 番目の方法でスキームを変更するための手順は次のとおりです。

  1. [ファイル] メニューの [新規] > [その他] をクリックします。
  2. [C++test] > [カスタム コンパイラ] を選択し、[次へ] ボタンをクリックします。
  3. [カスタム コンパイラの追加] を選択して [次へ] ボタンをクリックします。
  4. 次の操作を行って、カスタム コンパイラを設定します。
    1. コンパイラの名前を入力します。
    2. [コンパイラの種類] ドロップダウン リストから [Wind River EGCS 2.9] または [Wind River GCC 2.9] を選択します。
    3. 正しいコンパイラ/リンカー 実行可能ファイルを指定します。
  5. コンパイラ識別子に任意の変更を加えます (コンフィギュレーションを共有する場合など)。[次へ] ボタンをクリックします。
  6. 下の 3 つのテキスト ボックスにコンパイラ コンフィギュレーション ファイルが作成される場所を指定し、[完了] ボタンをクリックします。
  7. 外部的なファイル システム ナビゲーターで、指定した場所を開きます。
  8. c.psrc ファイルに symmatcher.manglingSchema gcc を追加します。
  9. cpp.psrc ファイルに symmatcher.manglingSchema g++2 を追加します。
  10. ファイルを保存します。
  11. C/C++test に変更を適用し、再起動します。
    • あるいは、C++test メニューの [設定] > [コンフィギュレーション] > [カスタム ディレクトリ] > [カスタム コンパイラ] で場所を変更した場合、オプションをいったんオフにして [適用] をクリックし、再びオンにして [OK] をクリックします。
  12. C/C++test プロジェクト プロパティ パネルの [ビルド設定] > [コンパイラ設定] > [種類] で新しく作成したコンパイラ コンフィギュレーションを選択します。
  • No labels