Warum schreibt SCons VariantDir () die Ausgabe nicht in das angegebene Verzeichnis?

Ich denke darüber nachSCons für ein neues Projekt. Es sieht wirklich gut aus, obwohl ich findeVariantDir ziemlich verwirrend.

Ich habe ein einfaches Projekt mit einer Handvoll C-Quelldateien in einem Verzeichnis und möchte im "normalen" und im "Profil" -Modus erstellen - mit zwei verschiedenen Optionen für gcc. Ich möchte, dass die Ausgaben in die normalen Verzeichnisse / und profile / gehen.

Zum Testen habe ich auf eine einzige Quelldatei zurückgeschnitten, t.c, die eine hatmain() drin. MeineSConstruct Die Datei befindet sich im selben Verzeichnis und sieht folgendermaßen aus:

normal = DefaultEnvironment(tools=['mingw'], CCFLAGS = '-O2')
normal.VariantDir('release', '.', duplicate=0)
normal.Program('t', ['t.c'])

#profile = normal.Clone(CCFLAGS='-O2 -pg', LINKFLAGS = '-pg')
#profile.VariantDir('profile', '.', duplicate=0)
#profile.Program('t', ['t.c'])

Wenn ich scons starte, erwarte ich, dass es t.o und t.exe in release / ablegt, aber es legt sie im aktuellen Verzeichnis ab. Und ich kann es mit den 3 unkommentierten Profilzeilen überhaupt nicht ausführen - wenn ich das tue, erhalte ich diese Fehlermeldung:

scons: *** Zwei Umgebungen mit unterschiedlichen Aktionen wurden für dasselbe Ziel angegeben: t.o.

Grundsätzlich bin ich mir nicht sicher, warum meine VariantDir () -Aufrufe Scons nicht anweisen, die Ausgabe im angegebenen Ausgabeverzeichnis abzulegen.release.

(Ich habe einiges in den Dokumenten und Newsgroups gelesen, aber nichts, was diese Frage beantwortet. Das Nächste, das ich gekommen bin, istdiese SeiteDies beschreibt eine ähnliche Sache, beinhaltet jedoch ein separates src / -Verzeichnis und zwei separate scons-Dateien und das Importieren / Exportieren von Variablen zwischen diesen. Das scheint nicht angenehm zu sein.)

Antworten auf die Frage(3)

Ihre Antwort auf die Frage