¿Por qué SCons VariantDir () no pone salida en el directorio dado?

Estoy pensando en usarScons para un nuevo proyecto. Se ve muy bien, aunque estoy encontrandoVariantDir bastante confuso.

Tengo un proyecto simple con un puñado de archivos fuente en C en un directorio, y quiero construir en modo "normal" y en "perfil", con dos conjuntos diferentes de opciones para gcc. Quiero que las salidas vayan en los directorios normal / y profile /, respectivamente.

Para las pruebas, he recortado a un solo archivo fuente, t.c, que tiene unmain() en eso. MiSConstruct archivo 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 ejecuto scons, espero que ponga t.o y t.exe en la versión /, pero los coloca en el directorio actual. Y no puedo ejecutarlo en absoluto con las 3 líneas de perfil sin comentarios. Si lo hago, recibo este error:

scons: *** Se especificaron dos entornos con diferentes acciones para el mismo objetivo: t.o

Básicamente, no estoy seguro de por qué mis llamadas VariantDir () no le dicen a los scons que pongan la salida en el directorio de salida especificado,release.

(He leído un poco en los documentos y grupos de noticias, pero nada que responda a esta pregunta. Lo más cerca que he llegado esesta página, que describe una cosa similar, pero implica un directorio src / separado y dos archivos scons separados, e importar / exportar variables entre ellos. Eso no parece agradable.

Respuestas a la pregunta(3)

Su respuesta a la pregunta