Desidero che SCons generi per me alcuni file sorgente nella mia directory src/
e li creo come qualsiasi altro file sorgente nella mia directory di build build/variantX
.SCons code generation e VariantDir
Questo è il mio file SCons:
import SCons
def my_builder(env, target, source):
# do stuff
pass
env = Environment()
env.VariantDir('build/variant1/', 'src', duplicate=0)
env.Command('src/foobar.cc', 'src/foobar.input', action=my_builder)
env.Program('bin/test', [
'build/variant1/foobar.cc',
'build/variant1/test.cc',
])
Questo gli errori con il seguente messaggio:
Fonte
src/foobar.cc
non trovato, necessari per targetbuild/variant1/foobar.o
che non mi penso sia corretto, considerando che sto effettivamente fornendo un comando per costruire src/foobar.cc
.
Ora, ho provato un paio di soluzioni:
se sostituisco
build/variant1/foobar.cc
in programma consrc/foobar.cc
, funziona, ma ovviamentefoobar.o
viene creato insrc/
piuttosto chebuild/variant1
se sostituisco
src/foobar.cc
in Command conbuild/variant1/foobar.cc
, funziona, ma mi piacerebbe che il codice fosse generato insrc/
; (Anche perché le cose come percorsi relativi a includono le directory non funzioneranno seduplicate=1
)se
duplicate=1
, ricevo un messaggio di errore simile, ma questa volta menzionare la directory variant:Fonte
build/variant1/foobar.cc
non trovato , necessari per targetbuild/variant1/foobar.o
esiste un modo per aggirare questo? È un limite/bug in SCons, o c'è un malinteso fondamentale da parte mia?
Hai mai trovato una risposta a questo problema? Sto affrontando qualcosa di molto simile. – jfritz42