Estoy pensando en usar SCons para un nuevo proyecto. Se ve muy bien, aunque estoy encontrando VariantDir
bastante confuso.¿Por qué SCons VariantDir() no pone salida en el directorio dado?
Tengo un proyecto simple con un puñado de archivos fuente C en un directorio, y quiero construir en modo "normal" y en modo "perfil" - con dos conjuntos diferentes de opciones para gcc. Quiero que las salidas vayan en los directorios normal/y perfil /, respectivamente.
Para las pruebas, he reducido a un solo archivo fuente, t.c, que tiene un main()
en él. Mi archivo SConstruct
está en el mismo directorio, y se ve así:
normal = DefaultEnvironment(tools=['mingw'], CCFLAGS = '-O2')
normal.VariantDir('release', '.', duplicate=0)
normal.Program('t', ['t.c'])
#profile = normal.Clone(CCFLAGS='-O2 -pg', LINKFLAGS = '-pg')
#profile.VariantDir('profile', '.', duplicate=0)
#profile.Program('t', ['t.c'])
Cuando corro scons, estoy esperando que se ponga a t.exe y en la salida /, pero los pone en el directorio actual . Y no puedo ejecutarlo en absoluto con las 3 líneas de perfil sin comentarios: si lo hago, obtengo este error:
scons: *** Se especificaron dos entornos con diferentes acciones para el mismo objetivo: a
Básicamente, no estoy seguro de por qué mis llamadas a VariantDir() no indican a scons que coloque la salida en el directorio de salida especificado, release
.
(He leído bastante en los documentos y grupos de noticias, pero nada que responda a esta pregunta. Lo más parecido que he venido es this page, que describe algo similar, pero implica un directorio src/independiente y dos archivos Scons separados, e importar/exportar variables entre ellos. Eso no parece agradable.)
Sí, ese es el único punto relevante cuando no se utiliza SConscript. –