GNU Make で OS の切り分け
C や C++ でプログラム全体を書いてるならともかく、例えば MySQL の UDF を書く程度の理由で、いちいち automake && autoconf なんてやってられない。でも OS によって gcc のフラグを変更したいとかそういう切実な欲求はあったりする。というわけで GNU Makefile の条件分岐を使ってアドホックに対処。
CFLAGS=-O2 -g -Wall -I/usr/local/mysql/include OSNAME=${shell uname -s} ifeq ($(OSNAME),Darwin) SHARED_OPTS=-bundle else SHARED_OPTS=-shared -fPIC endif CXXFLAGS=$(CFLAGS) all: foo.so foo.so: foo.cc g++ $(CXXFLAGS) $(SHARED_OPTS) -o $@ foo.cc clean: @rm -f foo.so
こんな感じ。環境によってインクルードパスを変更したい場合とかは、
% CFLAGS='-O2 -g -Wall -I/usr/local/mysql51/include' make -e
とかすればいいし。これならものぐさな自分でも書ける。GNUmake++