2012-06-13 13 views
6

Estoy intentando copiar el archivo de programa generado en el directorio padre después de la compilación automáticamente.SCons copying program after compilation to parent directory

Intenté esto, pero esto no funciona.

env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Copy("../program_name", "program_name") 

¿Cómo puedo hacer esto con SCons?

Respuesta

8

Un mejor enfoque sería utilizar el blanco y el constructor de comandos(), así:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Command(target = "../program_name", 
     source = prgTarget, 
     action = Copy("$TARGET", "$SOURCE")) 

o dependiendo de la situación, utilice el Install() builder, así:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Install("../program_name", source = prgTarget) 
+0

+ 1 Esto parece un buen trabajo para el constructor de instalación. Usar un constructor de comandos suena como una complicación del código. ¿Conoces alguna situación en la que una compilación de comandos tenga alguna ventaja? – daramarak

+0

@daramarak, el constructor Command() es más flexible, ya que puede ser cualquier comando, como scripts, etc. El constructor Install() es solo para "instalar" (copiar) uno o varios archivos/destinos. – Brady

+0

Sé que el Creador de comandos es flexible, pero me preguntaba si había casos en los que un Creador de comandos fuera preferible para copiar un archivo en lugar del Creador de instalación. – daramarak