У меня есть проект 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. Как я могу решить эту проблему?