makefile の編集
kwwrap ベースのビルド統合の最も単純なシナリオでは、make ビルドを行い、makefile が C コンパイラ、C++ コンパイラ、およびリンカー/ライブラリアンの名前で広く使用される複数のバリエーションを定義しています。
makefile に kwwrap を挿入すると、ビルド内の compile and link コマンドごとに kwwrap が実行され、ビルドの実行中に build trace (ビルドトレース) が生成されます。build trace (ビルドトレース) は、ビルド中に発生したプロセス呼び出しのシーケンスを含むファイルです (例: make コマンド)。
kwwrap が必ず同じファイルに書き込むように、常に追跡ファイルのフルパスを指定する必要があります。さらに、kwwrap 対応のビルドを同じ設定で複数回実行する場合は、ビルドの再実行の前に、以前に生成された build trace (ビルドトレース) を削除してください。これを怠ると、複数のビルドからのコマンドが追跡ファイルに含まれることになります。
kwwrap をビルドと統合するには
- makefile を編集し、コンパイラ名およびリンカー名の前に kwwrap コマンドラインを挿入します。たとえば、
CC = gcc CXX = g++ AR = ar
上記の行は次の行で置換されます。
CC = kwwrap -o <path_to_kwwrap_trace_file> gcc CXX = kwwrap -o <path_to_kwwrap_trace_file> g++ AR = kwwrap -o <path_to_kwwrap_trace_file> ar
フィールド<path_to_kwwrap_trace_file> は kwwrap によって生成される build trace (ビルドトレース) ファイルのフルパスです。
- ビルドコマンドが (make など) を実行します。
kwwrap はビルドの実行中の build trace (ビルドトレース) を生成します。make ファイルで指定された場所に保存されます。
- kwinject を使用して build trace (ビルドトレース) を build specification (ビルドスペック) に変換します。
kwinject --trace-in <path_to_kwwrap_trace_file> --output <path_to_kwinject_output_file>
例:
kwinject --trace-in C:/temp/kwwrap.trace --output C:Klocwork/temp/kwinject.out
例
Zlib は GNU make を使用して UNIX 上でビルドする小さなオープンソースプロジェクトです。makefile は、環境変数 CC、AR、および LDSHARED を定義し、静的ライブラリおよび動的ライブラリのコンパイルと生成に使用するツールを定義します。makefile を編集して kwwrap を追加することにより、コンパイラおよびリンカーのラップされたバージョンを使用することができます。
$ cd /path/to/zlib-1.2.2 ... configure and generate Makefile $ ./configure ... now edit the Makefile -- file: zlib-1.2.2/Makefile ... CC=kwwrap -o /path/to/kwwrap.trace gcc LDSHARED=kwwrap -o /path/to/kwwrap.trace gcc AR=kwwrap -o /path/to/kwwrap.trace ar rc ... -- cut ... run the build using wrapped compiler/linker; kwwrap.trace will be generated $ make ... convert the raw build trace to a build specification $ kwinject -t /path/to/kwwrap.trace -o kwinject.outコンパイラをコマンドとオプションで置換できない場合
コンパイラを単一のコマンド (つまり -o などのオプションなし) で置換する必要がある場合、Windows では kwwrap の構成ファイルを作成できます。ファイルには kwwrap.conf
という名前を付け、それを kwwrap と同じディレクトリに配置する必要があります。
kwwrap 構成ファイルの各行の形式は次のとおりです:<executable_name>=<options_list>
フィールド
- <executable_name> はコンパイラ実行可能ファイルまたはリンカー実行可能ファイルです。
- <options_list> は kwwrap オプションのリストです。
Notes
- 等号 (=) の前後にはスペースを挿入しないでください。
- スペースを含む変数値を指定するには、二重引用符 (") を使用してください。
kwwrap.conf ファイルの例
cl.exe=-o "C:\My traces\mozilla.trace" "C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin\cl.exe" link.exe=-o "C:\My traces\mozilla.trace" "C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin\link.exe"