GNU make で make ファイルを作成 ― 2006年07月11日 15時43分46秒
雰囲気としては以下の様な感じだ。prog.pm というプログラムを、 prog.obj と submodule.obj と function.obj から作るとする。この三つのファイル名が prog.list というファイルに格納されているとしよう。なお、リンカーが .list ファイルを必要とする。話を簡単にするために全てのファイルは一つのディレクトリにあるとする。
ここで、make ファイルにも同じプログラムとオブジェクトファイルの規則を書いていたら、二度手間にしかならない。そこで、prog.list から .make.prog を作る。なお、リンカーは -list オプションを取ることにする。
%.pm : %.list
link $@ -list $@.list
.make.% : %.list
sh list2make.sh $< > $@
%.obj : %.c
cc $< -o $@
-include .make.prog
こうすると、prog.pm を prog.list を元に自動で作れる。なお、GNU make では include の前にハイホンを付けると、ファイルが存在しない場合でもエラーで終了せずに操作を続ける。今回は手抜きで .make.prog を直に書いたが、こちらも wildcard を使えばいい。
list2make.sh で
prog.pm : prog.obj
prog.pm : submodule.obj
prog.pm : function.obj
という内容の .make.prog を作れば良いわけだ。makedepend のコマンドのようなものだ。makedepend が C ファイルを読み、ヘッダファイルとオブジェクトファイルの関係を導くのに対し、list2.make.sh はプログラムと、オブジェクトファイルの依存関係を構築する。さらにこの後に、makedepend でもして、-include すればヘッダファイルの依存関係も処理できる。
なお、今回の make ファイルは例として作っただけで、実際に動かしていない。GNU 'make' のサイトにもっと詳しい解説が書いてある。
次回。
最近のコメント