GNU make の暗黙ルール/型ルールの使用例
やっぱ、GNU makeはすげー。やばすぎ。
$ cat Makefile %.tab: %.csv cat $< | perl -pwe 's/,/\t/g' > $@ from = $(wildcard *.csv) into = $(patsubst %.csv,%.tab,$(from)) target: $(into) $ ls Makefile bar.csv foo.csv $ make cat bar.csv | perl -pwe 's/,/\t/g' > bar.tab cat foo.csv | perl -pwe 's/,/\t/g' > foo.tab $ ls Makefile bar.csv bar.tab foo.csv foo.tab
こんなことができちまう。すごすぎ。ミソは、
- 各ファイル毎に、ルールを書かなくてもよい(暗黙ルール)
- 該当するsuffixを持つファイルに対して、自身でルールを記述できる(型ルール)
ここにinfoの翻訳があって、参考になる。
http://www.ecoop.net/coop/translated/GNUMake3.77/
(追記)
perlのオプションを変更しました(-nweを-pweに)。あまり-pを使う習慣がなかったので、これを機会に乗り換えてみるテスト(ちなみにcatは、あえて入れてあります。変数'$<'が、あまりにも見づらいので)。
http://itoshi.tv/d/?date=20041031#p02
より。
(更に修正)
ワンライナーなitoshi氏に指摘いただいたmake以下を修正。