Ho bisogno di eseguire due programmi in sequenza come parte di un builder personalizzato.ottenere la directory root di scons
Uno di questi è un programma con cui sono bloccato e non è in grado di gestire percorsi assoluti/relativi, quindi devo utilizzare l'opzione chdir=1
del generatore in modo che le sue azioni vengano eseguite nella stessa directory della destinazione.
Il secondo è uno script che si trova nella sottodirectory tools
del progetto; il file SConstruct è nella radice del progetto. Devo creare un'azione per eseguire questo script e sto avendo problemi perché non ho né il percorso assoluto del progetto, né un percorso relativo dalla directory in cui si trova il target nella sottodirectory tools
in cui si trova lo script . Se potessi in qualche modo ottenere il percorso assoluto verso la directory radice del mio progetto, sarei tutto pronto, potrei semplicemente concatenare `tools/myscript.bar 'e farla finita.
Ecco quello che ho, più o meno:
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe myscript.bar ${SOURCE.filebase}',
], chdir=1);
Il problema è che ho bisogno di cambiare l'azione in questione, in modo che "myscript.bar" si possono trovare, qualcosa di simile:
env['BUILDERS']['FooBar'] = Builder(action = [
'c:/bin/foo.exe ${SOURCE.filebase}',
'c:/bin/bar-interpreter.exe $PATHTOHERE/tools/myscript.bar ${SOURCE.filebase}',
], chdir=1);
Questo sembra così semplice ma non riesco a capire come.