comments普段、自分でMakefileを書くことはほとんど無い。あったとしても、ちょっとしたプログラムでソースファイルとして数個のCソースがあるようなもの。区切って書くとか、変数が使えて、その参照は$(~)でやるとか、そういうぐらいしかなかった。ところが、ある程度の規模があるプログラムを作成することになり、ちょっと自分流Makefileというものを、ちゃんと作っておこうと思い立つ。一回作っておけば、使いまわしできるからね。こんなことができれば・・・・という自分の要求は、以下のとおり。中間ファイル(オブジェクトファイル)は、ソースとは別のディレクトリに吐き出させたい。ここで、元となるソースは複数のディレクトリ内に散在している。適当にググレば、そんなMakefileのサンプルがわんさか出てきて、コピペで終了と思ったが、甘かった。1.と2.を同時に実現する方法がなかなか見つからない・・・。いうことで、Makefileの仕様を勉強しながら、自分流Makefileをつくる。例として次のようなディレクトリ・ファイル構成を考える。Cコード(main.c)とヘッダファイル。サブのディレクトリに、複数のCコード(func.c)が存在している状態。複数のディレクトリに同じファイル名のCファイルがあるのが曲者だ。既存のソースの流用などをしたいとき、同じファイル名のcファイルが複数存在することはありうる。$(DEPS)上記のMakefileを、Buildディレクトリがまだできていない状態から実行したときに何が行われるのか、ちゃんと理解しようとすると、以下のとおり。存在していないことに気づく。ファイルがターゲットとなっているルールを見つける。~.dを生成するルールは31~35行目にある。