Make再考

http://www.booran.com/menu/makefile/index.html
ということで,数年ぶりにMakefileを書いてて必要そうな所だけ復習した(そしてあのMakefileの講義が無駄なことを悟ったw).変数とか今までずっと「=」しか使ってなかったんだけど,定数なら「:=」の方がいいらしい.

SRC := foo.d
MAP  = $(addsuffix .map, $(basename $(SRC)))

遅延評価できるので「=」みたいな関数は必要な所で評価した方が効率いいよねってことか(でも昔は:=はなかったらしいので,単純のだと=でまとめても問題ないかも?).
後defineがよく分からなかった.上のサイトだと

define foo
	$(RM) $(MAP) ...
endef

clean:
	$(foo)

で出来そうなんだけど,上手くいかない.こういう時は公式を参照すべしということでdefineで検索したら見つかった

	$(call foo)

とcallを呼ぶ必要があるらしい.Webで参考にしようとMakefileを探した中では両方あったので,あるバージョンから変更があったのかも(今回使ったGNU MakeはMSYSの3.79.1なので,Linuxとかでも試してみるべきか).


まぁでも他にもかなり色々出来そうなので,もう少し勉強が必要かもしれない.今だと色々ビルドツールがあるのでMakeに拘る必要はないのだけども^^;
どれが一番お手軽で環境に依存しにくいんだろうか…