【发布时间】:2010-11-01 21:59:48
【问题描述】:
我有一个使用 Scons 构建的 C++ 项目。起初我只有优化版本要编译,它工作正常。然后我还需要一个调试版本,然后我为它添加另一个环境。这是 Scons 代码:
env = Environment()
opt = env.Clone(CCFLAGS=['-pthread', '-O3', '-Wall'])
opt_objs = opt.Glob('src/*.cpp')
prog = opt.Program('prog', opt_objs)
dbg = env.Clone(CCFLAGS=['-pthread', '-Wall', '-g', '-O0'])
dbg_objs = dbg.Glob('src/*.cpp')
dbg_prog = dbg.Program('dbg_prog', dbg_objs)
使用这段代码,我遇到了错误:
scons: *** Two environments with different actions were specified for the same target:
src/CometReadService.o
如您所见,opt.Glob('src/.cpp') 和 dbg.Glob('src/.cpp') 创建的那些 .o 文件目标完全相同的名称。通过阅读文档Multiple Construction Environments,我知道我可以将对象重命名为“opt.Object('xxx-opt', 'xxx.c')”,但是,它是 Glob 而不是 Object。我怎么解决这个问题?
【问题讨论】: