《 SCons用户指南》介绍了Multiple Construction Environments用于构建单个程序的多个版本的用法,并给出以下示例:

opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')

o = opt.Object('foo-opt', 'foo.c')
opt.Program(o)

d = dbg.Object('foo-dbg', 'foo.c')
dbg.Program(d)

代替手动为使用不同环境编译的对象分配不同的名称,VariantDir()/variant_dir听起来是一个更好的解决方案...

但是,如果我将Program()构建器放置在SConscript中:
Import('env')
env.Program('foo.c')

如何将不同的环境导出到同一SConscript文件?
opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')

SConscript('SConscript', 'opt', variant_dir='release') #'opt' --> 'env'???
SConscript('SConscript', 'dbg', variant_dir='debug')   #'dbg' --> 'env'???

不幸的是,SCons Wiki中的讨论并未对该主题带来更多的见解。

感谢您的输入!

最佳答案

SConscript是在环境本身上定义的一种方法:

for dir, env in (('release', opt), ('debug', dbg)):
    env.SConscript('SConscript', 'env', variant_dir=dir)

然后从SConscript中,您可以:
Import('env')

10-06 05:16