Tengo un proyecto de C++ crea con Scons. Al principio solo tengo la versión optimizada para compilar, funciona bien. Luego también necesito una versión de depuración, luego agrego otro entorno para ella. Aquí está el código Scons:¿Cómo usar Scons para compilar los mismos objetos en diferentes entornos con Glob?
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)
Con este código, me encontré con error:
scons: *** Two environments with different actions were specified for the same target:
src/CometReadService.o
Como se puede ver, los archivos creados por objetivos .o opt.Glob ('src/. cpp ') y dbg.Glob (' src/ .cpp ') exactamente el mismo nombre. Al leer el documento Multiple Construction Environments sé que puedo cambiar el nombre del objeto como "opt.Object ('xxx-opt', 'xxx.c')", pero sin embargo, es Glob no Object. ¿Como puedó resolver esté problema?
Conceptos difíciles de entender como ese, con nombres que nunca tendrá la idea de buscar en google están reduciendo mucho el poder de scons ... Personalmente, me gustaría simplemente llamar a env.TemporaryObjectDir y todo mi .os se almacenará allí ... En lugar de esta solución extraña ... Pero de todos modos, muchas gracias, he buscado por edades :-) –
Esto es completamente retrasado de Scons, la idea de Globbing para los archivos en un lugar que no existe (especialmente con el duplicado = 0) es masivamente contra-intuitivo. Vendí a mi jefe usando scon en lugar del espantoso makefile que teníamos, pero ahora me arrepiento. –