Ich möchte, dass SCons einige Quelldateien für mich in meinem Verzeichnis src/
generieren und dann wie jede andere Quelldatei in meinem Build-Verzeichnis build/variantX
erstellen.SCons Codegenerierung und VariantDir
Das ist mein SCons Datei:
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',
])
Diese Fehler mit der folgenden Meldung:
Quelle
src/foobar.cc
nicht gefunden, nach Ziel benötigtbuild/variant1/foobar.o
was ich nicht denke, ist richtig, wenn ich bedenke, dass ich tatsächlich einen Befehl zur Verfügung stelle, src/foobar.cc
zu bauen.
Jetzt habe ich versucht, ein paar Lösungen:
wenn ich mit
src/foobar.cc
build/variant1/foobar.cc
in Programm ersetzen, es funktioniert, aber offensichtlichfoobar.o
wird insrc/
eher geschaffen alsbuild/variant1
wenn ich ersetzen
src/foobar.cc
in Command mitbuild/variant1/foobar.cc
, es funktioniert, aber ich möchte den Code insrc/
erzeugt werden; (Auch, weil Dinge wie relative Pfade in Include-Verzeichnisse nicht, es sei dennduplicate=1
arbeiten)wenn
duplicate=1
, ich eine ähnliche Fehlermeldung erhalten, aber dieses Mal zu erwähnen, das variant-Verzeichnis:Quelle
build/variant1/foobar.cc
nicht gefunden erforderlich, durch Zielbuild/variant1/foobar.o
gibt es eine Möglichkeit, um dieses? Ist es eine Einschränkung/Fehler in SCons oder gibt es ein fundamentales Missverständnis auf meiner Seite?
Haben Sie jemals eine Antwort auf dieses Problem gefunden? Ich habe etwas sehr ähnliches vor mir. – jfritz42