Makefile覚書のMakefileのテンプレートが使いやすい。
通常、SRCを自分で書いていくことが多いが、このMakefileではシェルを用いて動的に判断するのでファイルを調べて書く必要がない。
さらに部分的コンパイルの依存関係を解決する部分もincludeするので、ヘッダファイルなどを変更した場合でも上手く部分コンパイルすることができる。
このMakefileを試す前にautoconf, automakeを一通り試してみた。が、mingw32のクロスコンパイラを使うconfigureの作り方がよく分からなかったため、簡単に済ませるためにMakefileで対応することにした。
make -C src
さらに上記のサイトにも書いてあるが、srcディレクトリのMakefileでmakeしたい場合は-Cを用いて行うことができる。この場合、元のMakefileで指定したCCなどの設定は引き継がれることになるので、/にてmake CC=gccとしても、そのMakefileに$(MAKE) -C srcと書いてあれば、src/Makefileにも同等の環境設定でコンパイルすることが可能だった(はず)。
よって上記サイトのMakefileをディレクトリごとに用意しておけば、コードの可視性が良くなり、効率が上がる。
補足:
上記の取り消し線部分のCCが引き継がれるという話は、上位のMakefileでCC=を指定したからではなく、シェルにて
# make CC=gcc
とシェル引数を渡した際に、シェル引数はMakefileによるCC=の設定よりも強制力があるから引き継がれたもの、であったことが分かったため修正した。