トップ  検索

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

Copyright (c) 2001-2008 Takefumi MIYOSHI, All rights reserved