Warum setzt SCons VariantDir () keine Ausgabe in das angegebene Verzeichnis?

8

Ich denke darüber nach, SCons für ein neues Projekt zu verwenden. Es sieht wirklich gut aus, obwohl ich VariantDir ziemlich verwirrend finde.

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

Zum Testen habe ich auf eine einzige Quelldatei, t.c, zurückgesetzt, in der main() enthalten ist. Meine SConstruct -Datei befindet sich im selben Verzeichnis und sieht folgendermaßen aus:

%Vor%

Wenn ich Scons starte, erwarte ich, dass t.o und t.exe in release / gesetzt werden, aber sie werden in das aktuelle Verzeichnis gestellt. Und ich kann es überhaupt nicht mit den 3 Profillinien unkommentiert ausführen - wenn ich das tue, erhalte ich diesen Fehler:

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

Grundsätzlich bin ich nicht sicher, warum meine Aufrufe von VariantDir () Scons nicht sagen, die Ausgabe in das angegebene Ausgabeverzeichnis, release , zu stellen.

(Ich habe ein gutes Stück in den Dokumenten und Newsgroups gelesen, aber nichts, was diese Frage beantwortet. Der nächste, dem ich gekommen bin, ist Seite , die eine ähnliche Sache beschreibt, aber es beinhaltet ein separates Verzeichnis src / und zwei separate scons-Dateien und das Importieren / Exportieren von Variablen zwischen ihnen. Das scheint nicht angenehm.)

    
Ben Hoyt 02.07.2009, 12:26
quelle

3 Antworten

8

Ja, VariantDir ist in scons verwirrend. Obwohl nicht gut beworben, können Sie sowohl SConstruct als auch SConscript in dasselbe Verzeichnis einfügen, indem Sie das aktuelle Verzeichnis als Quellverzeichnis verwenden

%Vor%

und

%Vor%

Ich habe noch nie einen Weg gefunden, die Verwendung von zwei Dateien zu vermeiden, während ich versucht, das abweichende Verzeichnis zu verstehen:)

    
David Cournapeau 02.07.2009, 14:10
quelle
8

Ich konnte mithilfe dieses Aufrufs Binärdateien in einem Build-Verzeichnis trennen:

%Vor%

Wenn Sie Binärdateien zwei Ebenen tiefer in ein Verzeichnis einfügen möchten, tun Sie Folgendes:

%Vor%

Geben Sie im Grunde den Parameter src_dir als Pfad von Ihrem Build-Verzeichnis zurück zu Ihrem Quellverzeichnis an.

    
VladLosev 25.07.2009 04:39
quelle
3

Als Ссылка sagte,

  

Beachten Sie, dass Sie, wenn Sie keine SConscript-Datei im Unterverzeichnis src verwenden, angeben müssen, dass das Programm aus der Datei build / hello.c erstellt werden muss, die SCons im Unterverzeichnis build duplizieren.

%Vor%

wenn ich es mit scons unter Linux starte.

%Vor%

Ich denke, es würde auch auf Win32 funktionieren

    
wcy 01.07.2014 08:36
quelle

Tags und Links