У меня есть проект на 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'), имеют одно и то же имя. Читая документ Несколько строительных сред Я знаю, что могу переименовать объект как "opt.Object ('xxx-opt', 'xxx.c')", но, тем не менее, это Glob, а не Object. Как я могу решить эту проблему?