トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

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