! Makefileで条件分岐 makeの際にOSの種類をみて処理を変えたいということがよくある. BSD makeを使うのをあきらめて,GNU makeを利用すると ifeq〜else〜endifが使えて便利なのだが, ifeq (`uname`,Darwin) OPT=hoge else OPT=gaso endif みたいなことをやっても上手くいかない. 期待した動作を得るためには,shell関数を使って ifeq ($(shell uname),Darwin) OPT=hoge else OPT=gaso endif のようにしなければいけない. また,findとかを使ってファイルのリストを得たいような場合も 変数にバッククォートで括ったコマンドを与えるよりも shell関数を使った方が,実行が一回で済むというメリットが得られるようだ.