複数のターゲット、複数のプラットフォーム、および場合によっては複数のアーキテクチャ用に複数のライブラリを構築している waf ファイルがあります。
私は現在、waf 1.7 のドキュメントに従って次のようなバリアントの環境をセットアップしています。
def configure(conf):
# set up one platform, multiple variants, multiple archs
for arch in ['x86', 'x86_64']:
for tgt in ['dbg', 'rel']:
conf.setenv('platform_' + arch + '_' + tgt)
conf.load('gcc') # or some other compiler, such as msvc
conf.load('gxx')
#set platform arguments
ただし、これにより、waf は configure 中にコンパイラを検索して複数の行を出力します。それはまた、同じ環境の近くに何度も頻繁にセットアップしていることを意味します. 可能であれば、これを一度実行したいと思います。たとえば、次のようになります。
def configure(conf):
# set up platform
conf.setenv('platform')
conf.load('gcc')
conf.load('gxx')
# set platform arguments
for arch in ['x86', 'x86_64']:
for tgt in ['dbg', 'rel']:
conf.setenv('platform_' + arch + '_' + tgt, conf.env.derive())
# set specific arguments as needed
ただし、 conf.env.derive は浅いコピーであり、 conf.env.copy() はエラー'list' object is not callableを返します
これはwaf 1.7でどのように行われますか?