make 事情2007年06月08日 10時54分03秒

旧来の make は機能が古すぎて、使い物にならない。sysV-make も似たような物だ。少なくても、make だけである程度の書こうとすると BSD makeGNU make ぐらいの機能は必要だ。

make で何をしたいかにもよる。しかし、make だけで、ビルドの機能を完結させたいのなら、旧来の make ではほぼ不可能だ。何といっても、旧来の make は include などの他のファイルの読み込みの機能と、条件分岐の機能がとても弱い。make だけで、終わらせようとするのがほぼ不可能な位貧弱だ。わざわざ、書き起こしても徒労に終わる。

しかし、旧来型の make だけしか使えない環境もあるかも知れない。その様な時は、make を二段式にする手がある。Makefile から、様々な依存関係や、前処理をして、静的には埋め込めない条件等を埋め込んだ makefile を生成するのがお薦めだ。

.depend などを旧来の make に読み込ませようとすると、ファイルが存在している必要がある。しかし、.depend などを make から作ることは出来ない。そして、cvs などの履歴管理に入れると、間違って他の変更と共に、コミットしてしまう。それなら、割り切って makefile 自体を生成してしまった方が手っ取り早く、普通の make には出来ないことも処理できる様になる。makefile は Makefile よりも優先されるので、出来る業だ。makefile に depend ターゲットを作り、Makefile を呼べるようにしておく。Makefile は depend 専用だ。その変わり、シェルスクリプトなどを使って、makefile を生成出来るようにする。

BSD make や GNU make になると条件式が使えるので、それなりの事が出来るようになる。BSD の ports system などを見ればわかるように、かなりの事が出来るようになる。拡張機能の豊富さを見ると GNU make は更に上をいく。Makefile の自動修正や、マクロの多段展開、拡張された各種マクロ値の編集機能、vpath などの、拡張機能を使うと make だけで、物凄いことが出来るようになる。automake や autoconf などを使うよりもよっぽど早く、しっかり処理できる。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2007/06/08/1564143/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。