✊
Makefile で CXX の設定をうまくやりたいメモ
Makefile で CXX をデフォルト clang++ にしたい.
しかし CXX=bora++ make のように環境変数で上書きできるようにしたい.
CXX ?= clang++
だと, CXX のデフォルトが g++ で設定されているため, デフォルト動作が g++ となってしまう.(?= は変数が定義されていなかったら代入だが, CXX は g++ がデフォルトとして定義されているため代入動作が発生しない)
CXX := clang++
だと環境変数で上書きできない.
info を使うてもありますが, print されてしまうのでちょっとつらい
解決
_CXXENV = $(shell printenv 'CXX')
ifeq ($(_CXXENV),)
CXX := clang++
endif
all:
$(CXX) -o test test.cc
まずは printenv shell コマンドで CXX 環境変数を取得します.
その後 ifeq でカラ文字だったら希望の cxx をセットします!
printenv がどのシェルでも使えるかは不明ですが, たぶんよほどへんてこなシェルでなければ abailable でしょう.
Discussion