ビルドオプションの話(後編)。
前回のの続き。ビルドオプションを指定したければ、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 件のコメント:
コメントを投稿