Diary/2005-1-9
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関数を使った方が,実行が一回で済むというメリットが得られるようだ.