我有一个使用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文件目标的名称完全相同。从文档“多个构建环境”中,我知道我可以像"opt.Object('xxx-opt', 'xxx.c')"一样重命名对象,但是,它是Glob而不是Object。我该如何解决这个问题?