Как использовать Scons для компиляции одних и тех же объектов в разных средах с Glob?

У меня есть проект C ++, который строится с помощью Scons. Сначала мне нужно скомпилировать только оптимизированную версию, она работает нормально. Затем мне также нужна отладочная версия, затем я добавляю для нее другую среду. Вот код 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

Как видите, цели этих файлов .o созданы opt.Glob ('src / .cpp') и dbg. Glob ('src / .cpp') точно такое же имя. Читая документ Multiple Construction Environments , я знаю, что могу переименовать объект как «opt.Object ('xxx-opt', 'xxx.c')», но, тем не менее, это Glob, а не Object. Как я могу решить эту проблему?

6
задан Fang-Pen Lin 26 October 2010 в 13:20
поделиться