BSD Make の -V で変数を表示2014年07月02日 14時15分42秒

make を使っている時に特定の変数が何になっているか知りたいときがある。あちらこちらから環境変数を持ってきたり、沢山の条件式があったり、再帰的に変数が設定されていると、探すのが大変だ。

BSD make では -V 変数 を用いて、make のターゲットを作成しないで、変数の値のみを表示できる。-V オプションは一つの変数毎に必要になる。

FreeBSD のコードを元にした例。


% make -C /usr/src -f Makefile.inc1 -V MACHINE_ARCH -V TARGET_ARCH -V KNOWN_ARCHES
i386
i386
amd64 arm i386 i386/pc98 ia64 mips powerpc sparc64 sparc64/sun4v

変数は各一行毎に表示されている。

更に -X を付けると、再帰的な値の展開が抑制される。


% make -C /usr/src -f Makefile.inc1 -V MACHINE_ARCH -V TARGET_ARCH -XV KNOWN_ARCHES
i386
${MACHINE_ARCH}
amd64 arm i386 i386/pc98 ia64 mips powerpc sparc64 sparc64/sun4v

TARGET_ARCH は MACHINE_ARCH から導き出されているのが分かる。

今度は MACHINE_ARCH をコマンドラインから上書きしてみる。


% make -C /usr/src -f Makefile.inc1 -V MACHINE_ARCH -V TARGET_ARCH -V KNOWN_ARCHES TARGET_ARCH=dummy
"/usr/src/Makefile.inc1", line 138: Unknown target dummy:dummy.
% make -C /usr/src -f Makefile.inc1 -V MACHINE_ARCH -V TARGET_ARCH -V KNOWN_ARCHES TARGET_ARCH=mips
i386
mips
amd64 arm i386 i386/pc98 ia64 mips powerpc sparc64 sparc64/sun4v

業と、dummy に設定したためにエラーが出た。KNOWN_ARCHES の中から選べばエラーにならない。