このセクションの内容
はじめに
Makefile ベースなどのカスタムビルドシステムがある場合、C++test の cpptestscan ユーティリティを使ってビルド設定の構成プロセスを効率化できます。cpptestscan ユーティリティは、ビルドプロセスについての情報を収集して「ビルドデータファイル」を生成します。「ビルド データ ファイルのオプションを使用」の説明にあるように、生成された「ビルドデータ ファイル」を使ってビルド設定を構成するよう C++test を設定できます。
ビルド データ ファイルの概念
作業ディレクトリ、コンパイルのコマンドライン オプション、オリジナル ビルドのリンク プロセスといったビルド情報は、「ビルド データ ファイル」というファイルに保存されます。以下のサンプルはビルド データ ファイルからの抜粋です。
------- cpptestscan v. 9.4.x.x ------- working_dir=/home/place/project/hypnos/pscom project_name=pscom arg=g++ arg=-c arg=src/io/Path.cc arg=-Iinclude arg=-I. arg=-o arg=/home/place/project/hypnos/product/pscom/shared/io/Path.o
cpptestscan
または cpptesttrace
を使ってビルド データ ファイルを作成する
cpptestscan
および cpptesttrace
の実行ファイルは C++test インストール ディレクトリの下に あります。これらのユーティリティは、既存のコードのビルド プロセスから情報を収集し、その情 報を使ってビルド データ ファイルを生成し、各実行についての情報をファイルに追加します。
cpptestscan
ユーティリティは、標準ビルド中にコンパイラあるいはリンカーのラッパーとして使用されます。既存のコードで cpptestscan
を使用するには、コンパイラ/ リンカーの実行ファイル の接頭辞として cpptestscan
を指定してコードをビルドします。これは次の 2 つの方法で実行できます。
- コンパイラ/ リンカーの実行ファイルのラッパーとして
cpptestscan
を呼び出すようにビルド コマンドを変更する。 - コマンドラインでコンパイラ変数を上書きしたくない場合 (または上書きできない場合)、実際の Makefile またはビルド スクリプト中に
cpptestscan
を埋め込む。
既存のコードで cpptesttrace
を使用するには、コンパイラ/ リンカーの実行ファイルの接頭辞として cpptesttrace
を指定してコードをビルドします。cpptesttrace
は、ビルド中に実行されたコンパイラとリンカーのプロセスをトレースし、トレースした内容をビルド データ ファイルに格納しま す。
どちらの場合も、PATH 環境変数に C++test インストール ディレクトリを追加するか、 cpptestscan または cpptesttrace ユーティリティへのフル パスを指定する必要があります。
cpptestscan
と cpptesttrace
で使用できるオプションは、以下の表のとおりです。オプションは、cpptestscan
コマンドに直接指定するか、環境変数を介して指定できます。コマンドラインの接頭辞を変えることで、ほとんどのオプションが cpptestscan
または cpptesttrace
に適用できます。
基本的な cpptestscan
の使用法:
- Windows:
cpptestscan.exe [options] [compile/link command]
- Linux:
cpptestscan [options] [compile/link command]
基本的な cpptesttrace
の使用法:
- Windows:
cpptesttrace.exe [options] [build command]
- Linux:
cpptesttrace [options] [build command]
オプション | 環境変数 | 説明 | デフォルト |
---|---|---|---|
-- cpptestscanOutputFile= <OUTPUT_FILE> -- cpptesttraceOutputFile= <OUTPUT_FILE> | CPPTEST_SCAN_OUTPUT_FILE) | ビルド情報を追加するファイルを定義します。 | cpptestscan.bdf |
| CPPTEST_SCAN_PROJECT_NAME | C++test プロジェクトの名前を定義します。 | 現在の作業ディレクトリ名 |
| CPPTEST_SCAN_RUN_ORIG_CMD | yes の場合、オリジナル コマンドラインが実行されます。 | yes |
| CPPTEST_SCAN_QUOTE_CMD_LINE_MODE | C++test がコマンドラインの実行を準備するときに、どのようにパラメーターを引用符で囲むかを指定します。
cpptestscanQuoteCm dLineMode はLinux ではサポートされません。 | all |
| CPPTEST_SCAN_CMD_LINE_PREFIX | [empty] ではなく、かつオリジナル実行ファイルの実行がオンの場合、指定のコマンドがオリジナル コマンドラインの前に付けられます。 | [empty] |
| CPPTEST_SCAN_ENV_IN_OUTPUT | yes の場合、選択した環境変数とコマンドライン パラメーターが出力ファイルにダンプされます。さらに詳しく設定するには --cpptestscanEnvFile または--cpptestscanEnvars オプションを使用します。 | no |
| CPPTEST_SCAN_ENV_FILE | 有効な場合、指定したファイルにはすべてのビルド コマンドに共通の環境変数が保持されます。メインの出力ファイルは差分だけを保持します。メインの出力ファイルのサイズを縮小するには、このオプションを使用します。– cpptestscanEnvInOutを有効にしてこのオプションを使用してください。 | [empty] |
| CPPTEST_SCAN_ENVARS | ダンプする環境変数名を指定するか、'*' を選択してすべての環境変数を指定します。 --cpptestscanEnvInOutput を有効にしてこのオプションを 使用してください。 | * |
| CPPTEST_SCAN_USE_VARIABLE | スキャンされたビルド情報中の各 "VALUE" 文字列を "${VAR_NAME}" 変数の使用で置き換えます。 | [empty] |
-- cpptesttraceTraceComm and | CPPTEST_SCAN_TRACE_COMMAND | ビルド プロセス情報を収集するときにトレースするコマンド名を定義します。コマンド名は正規表現で指定します。コマンド名はビルド プロセスで使用されるオリジナルのコンパイラ/リ ンカー コマンドと一致しな ければなりません。 |
例: cpptestscan を使用するように GNU make ビルド コマンドを変更する
make ベースのビルドで、コンパイラ変数が CXX であり、オリジナル コンパイラが g++ であるものとします。
make -f </path/to/makefile> <make target> [user-specific options] CXX="cpptestscan --cpptestscanOutputFile=/path/to/name.bdf --cpptestscanProjectName=<projectname> g++"
このコマンドは、通常と同じようにコードをビルドするだけでなく、指定されたディレクトリにビルド データ ファイル (name.bdf) を生成します。
注意
複数のディレクトリでビルドを実行する場合:
- 出力ファイルを指定しない場合、ソース ビルド ディレクトリごとに独自の .bdf ファイル が存在するべきです。この方法はソース ディレクトリごとに 1 個のプロジェクトを作成するのに適しています。
- ソース ツリーごとにプロジェクトを用意したい場合、上記の例にあるように、1 個の .bdf ファイルを指定する必要があります。
例: cpptesttrace を使用するように GNU make ビルド コマンドを変更する
通常の make ベースのビルドでは次のコマンドを使用するものとします。
make clean all
次のコマンドラインを使用できます。
cpptesttrace --cpptesttraceOutputFile=/path/to/name.bdf --cpptesttraceProjectName=<projectname> make clean all
このコマンドは、通常と同じようにコードをビルドするだけでなく、指定されたディレクトリにビルド データ ファイル (name.bdf) を生成します。
注意
コンパイラあるいはリンカーのファイル名がデフォルトの cpptesttrace
コマンドのパターンに一致しない場合、下記で説明する --cpptesttraceTraceCommand
オプションを使ってカスタマイズする必要があります。'cpptesttrace --cpptesttraceHelp' コマンドを実行すると、デフォルトの cpptestscan コマンドのトレース パターンを見ることができます。
例: cpptestscan を使用するように GNU Makefile を変更する
Makefile でコンパイラ実行ファイルの変数として CXX を使用し、通常は CXX=g++ として定義している場合、変数を再定義することができます。
ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
CXX="/usr/local/parasoft/cpptestscan --cpptestscanOutputFile=<selected_location>/MyProject.bdf --cpptestscanProjectName=MyProject g++"
else
CXX=g++
endif
次に、通常と同じようにビルドを実行し、make に BUILD_MODE 変数を追加します。
make BUILD_MODE=PARASOFT_CPPTEST
コードがビルドされ、ビルド データ ファイル (MyProject.bdf) が作成されます。生成されたビルドデータ ファイルを使って、GUI またはコマンドラインからプロジェクトを作成することができます。
注意
cpptestscan
および cpptesttrace
ユーティリティは、複数のコンパイラ実行ファイルを同時に実行できる並列ビルド システムで使用できます。マルチ コア マシンでビルド データ ファイルを用意する場合、たとえば、-j <number_of_parallel_jobs>
パラメーターを GNU make コマンドに渡すことで、より早くプロジェクトをビルドしてビルド データ ファイルを用意できます。
いつ cpptestscan を使うべきか
ビルド データ ファイルを準備する手続きをビルド システムに統合することを強く推奨します。統合すると、通常のビルドを実行するときに、別のアクションを実行することなく、ビルド データファイルを生成することができます。
それには、Makefile またはビルド スクリプトで、 コンパイラとリンカーの実行ファイルに接頭辞として cpptestscan を付加します。
いつ cpptesttrace を使うべきか
Makefile / ビルド スクリプトを変更できない場合、またはビルド コマンドラインからコンパイラ/ リンカーの実行ファイルに接頭辞を付加するのがあまりにも複雑な場合、ビルド コマンド全体の接頭辞として cpptesttrace を使用します。