2021年11月16日火曜日

MakeじゃないのよSConsは その2

ビルドオプションの話(前編)。

デバッグ用マクロを定義したり、最適化オプションを変更したりするのに、コンパイラに与えるオプションを変更したいことはよくある。そんな時、Makeなら

CFLAGS = -DDEBUG

のように暗黙のルールが参照する変数の値を変更しておけば、この設定はほぼMakefile全体に適用される。一方SConsは、

Program('test1', ['test1.c', 'foo.c', 'bar.c', 'baz.c'], CCFLAGS = '-DDEBUG')

のように引数で指定する(のが方法の1つ)。ただしこれだと、test1.c, foo.c, bar.c, baz.cのどれをコンパイルする際にも-DDEBUGオプションが付加される。では、例えばfoo.cとbar.cのコンパイル時のみ-DDEBUGを付けたい場合はどうするか。

objs =  Object('test1.c')
objs += Object('foo.c', CCFLAGS = '-DDEBUG')
objs += Object('bar.c', CCFLAGS = '-DDEBUG')
objs += Object('baz.c')
Program('test1', objs)

急にスクリプト臭くなったな。一々引数で指定したくないとか、デフォルトで指定したオプションを付けて欲しいとか、そう言った話は次回。

0 件のコメント:

コメントを投稿