2010-06-07 16 views
5

al momento sto provando a trasferire un progetto legacy da milioni di sloc da script .cmd smussati a SCons. Parti di esso sono VC++, altri sono Delphi. La creazione di script SConscript per i pezzi del C++ è stata semplicissima.Come posso forzare il builder di SConscript a cambiare directory?

Per creare la parte delphi, ho scritto un builder molto semplice che rileva se si tratta di un programma o di un progetto di libreria. Chiamando il builder dopo aver incatenato tramite SConscript, gli scons chiamano dcc32 $ subdir/project.dpr che inganna dcc32 a cercare le unità nella directory corrente invece del sottodirectory $.

C'è un modo per dire agli scons di inserire la sottodirectory $ prima di eseguire i comandi che risiedono nello sconscript o devo correggerlo nel builder?

Grazie in anticipo

risposta

5

SCons cambiamenti già nella directory di SConscripts sub-directory durante la lettura di loro, così sembra che il problema sta per essere fissato nel generatore vero e proprio.

Dopo che gli script sono stati analizzati e SCons sta eseguendo i comandi di compilazione, rimane nella directory di livello superiore. I comandi vengono quindi emessi utilizzando i nomi dei percorsi relativi a tale directory di livello superiore. Il modo per modificare questo comportamento consiste nell'utilizzare la parola chiave chdir nel Generatore.

L'esempio dalla pagina scons uomo è la seguente:

b = Builder(action='build < ${SOURCE.file} > ${TARGET.file}', 
      chdir=1) 
env = Environment(BUILDERS = {'MyBuild' : b}) 
env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in') 

è necessario specificare il componente .file come l'uso di chdir non cambia i nomi passati al costruttore, cioè sono ancora relative al la directory di primo livello.

+0

Questa è esattamente la combinazione di cui ho bisogno. La tua soluzione ha risolto il mio problema. Grazie mille! – Damg

Problemi correlati