makefile ファイルを編集するオプションがない場合

環境変数の使用

元の makefile を変更するオプションがない場合は、環境変数を使用して makefile で設定された値をオーバーライドすることができます。その後で GNU make または MS nmake の --environment-overrides (-e) オプションを使用できます。

make および gcc を使用した UNIX の例

... building on UNIX
$ cd zlib-1.2.2
... build
$ ./configure
...
$ CC="kwwrap -o /path/to/kwwrap.trace gcc"
$ AR="kwwrap -o /path/to/kwwrap.trace ar rc"
$ LDSHARED="kwwrap -o /path/to/kwwrap.trace gcc"
$ export CC AR LDSHARED
... build using wrapped compiler/linker; kwwrap.trace will be generated
$ make -e
... convert build trace to build specification
$ kwinject -t /path/to/kwwrap.trace -o kwinject.out

Windows の例

Windows プラットフォームでは、zlib はマイクロソフトの nmake とcl-compiler を使用してビルドされます。マイクロソフト指定の makefile で使用する少々異なる変数セットは、CC、AR、LD です。

... building on Windows
> cd d:\path\to\zlib-1.2.2
... set up environment variables
> set CC=kwwrap -o d:\path\to\kwwrap.trace cl
> set AR=kwwrap -o d:\path\to\kwwrap.trace lib
> set LD=kwwrap -o d:\path\to\kwwrap.trace link
... build uses wrapped compiler/linker; kwwrap.trace will be generated
> nmake -e -f win32\Makefile.msc
... convert build trace to a build specification
> kwinject -t d:\path\to\kwwrap.trace -o kwinject.out

ラッパースクリプトの作成

xerces は GNU make を使用して UNIX 上でビルドする中型のオープンソース プロジェクトです。xerces は "kwwrap gcc" のようなスペースを含むコンパイラ名を受け入れないカスタムの構成スクリプトを使用するため、makefile 編集の単純なアプローチはフィールドは適用しません。代わりに、ラッパースクリプトを作成します。

$ cd /path/to/xerces-c-src_2_6_0
... create a directory for shell-wrappers
$ mkdir kw-wrappers
... create several simple wrapper scripts and save them into the kw-wrappers directory:
-- file: kw-wrappers/kwwrap-gcc
#!/bin/sh
exec kwwrap -o /path/to/kwwrap.trace gcc "$@"
-- file: kw-wrappers/kwwrap-g++
#!/bin/sh
exec kwwrap -o /path/to/kwwrap.trace g++ "$@"
-- file: kw-wrappers/kwwrap-ar
#!/bin/sh
exec kwwrap -o /path/to/kwwrap.trace ar "$@"
-- cut
... don’t forget to set the execute permissions on the created scripts
$ chmod +x kw-wrappers/*
... set up PATH and other environment variables
$ PATH=$PWD/kw-wrappers:$PATH
$ CC=kwwrap-gcc
$ CXX=kwwrap-g++
$ AR=kwwrap-ar
$ export CC CXX AR
... configure xerces
$ XERCESCROOT=$PWD
$ cd $XERCESCROOT/src/xercesc
$ ./runConfigure -p linux -c $CC -x $CXX
... build using the wrapper scripts; build trace will be generated
$ make
... generate a build specification from the build trace
$ kwinject -t /path/to/kwwrap/trace -o kwinject.out