makefileでgccバージョンごとに切り替え
今度は外部コマンドにまで依存してみる。ちなみにMsys上でも動作確認済み。
gccはバージョンごとに使える引数が結構違う。
常に最新だけ使っていれば良いならそれでもいいんだけれど、MinGW32はgcc3.x系だし、Linuxの中にはまだ4.0を使っているものあったりするので、頭が痛い。
そこで上と同じように自動判別できるようにしてみた。
GCCVERSION:=$(shell $(CC) -dumpversion) dot:=. empty:= space:=$(empty) $(empty) GCCVERSION:=$(subst $(dot),$(space), $(GCCVERSION)) GCCMAJOR:=$(word 1, $(GCCVERSION)) GCCMINOR:=$(word 2, $(GCCVERSION)) ifeq (1,$(shell expr $(GCCMAJOR) \>= 4)) # 4.0以上用の設定 endif ifeq (1,$(shell expr \( $(GCCMAJOR) \> 4 \) \| \( $(GCCMAJOR) \= 4 \& $(GCCMINOR) \>= 1 \))) # 4.1以上用の設定 endif
makeの条件分岐には"等しい" or "定義されている"しかないので、大小判定部分はexprコマンドでやってます。
これで4.1で新設された最適化フラグも気軽に使えます。