2021年11月21日日曜日

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

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

前回のの続き。ビルドオプションを指定したければ、Program()やObject()の名前付き引数で、CFLAGSなりLINKFLAGSなりを指定可能だけど面倒。だからデフォルト値を指定したい場合、DefaultEnvironment()を使う。

def_env = DefaultEnvironment()
def_env['CFLAGS'] = '-DDEBUG'

DefaultEnvironment()は、デフォルトで適用される設定が詰まったenvironmentを返してくれるので、それを変更すればOK。上のように変更すれば、Object()とかではデフォルトでCFLAGS = '-DDEBUG'を指定することになる。または、以下のように取得時の引数で変更したい値を渡すことも可能(取得時とは言っても、取得したenvironmentは即捨てているけど)。

DefaultEnvironment(CFLAGS = '-DDEBUG')

わざわざDefaultEnvironment()と修飾しているからには、デフォルトじゃないEnvironment()もある。…と言うか、作成できる。

env = Environment()
env['CFLAGS'] = '-DDEBUG'
# env = Environment(CFLAGS = '-DDEBUG') と同じ

obj =  env.Object('test2.c') # -DDEBUGが付く
obj += env.Object('foo.c')   # -DDEBUGが付く
obj += Object('bar.c')
Program('test2', obj)

Environment()は新たに作成したenvironmentを返すので、それを変更してObject()やProgram()のレシーバとして使えば、変更した設定が適用される。なおEnvironment()が返す値は、その時点でのDefaultEnvironment()が返すenvironmentの複製のようだ。

0 件のコメント:

コメントを投稿