GNUMakefile を grep2010年01月19日 04時26分17秒

GNU Makefile では include を用いて他のファイルを読み込むことが出来る。少々大きめの Makefile があると、何処でどの変数が設定されているのだか分らないときがある。

もちろん、コードを追えば良いのだが、たかが一行を探すだけで幾つものファイルを手作業で探すのは、大変だし時間の無駄だ。もちろん grep をすれば良いのだが、Makefile を再帰的に grep するのに少々コツがいる。

-d を gmake にわたし、その出力の中にファイル名が含まれている。nawk でそのファイル名を探し余計な文字列を削る。


% gmake -d 2>&1 | \
    nawk "/Reading makefile/{gsub(/[\`]|'.*/, \"\", \$3); print \$3}" | \
    xargs grep keyword

シングルクォートを削除しなければいけないので、nawk にわたすスクリプトはダブルクォートを用いなければいけない。そのため、文字列のエスケープが入るので若干読みづらくなる。