2016-06-20 13 views
1

Ich möchte eine (Prebuild) -Datei aus dem Quellordner in den Zielordner (variant_dir) kopieren.Kopieren Sie eine Prebuild-Datei in Build-Ordner (SCons)

Dies führt zu einer Abhängigkeit Zyklus:

Command('main.elf', 'main.elf', Copy("$TARGET", "$SOURCE")) 

Wie ich, dass die Datei befand sich im Quellordner (Projektordner) und das Ziel ist in dem Build-Ordner ohne die Verwendung von konstanten Werten kopieren angeben könnte (in SConscript)?

Als Abhilfe umbenannt ich die Datei:

Command('main.elf', 'main.orig', Copy("$TARGET", "$SOURCE")) 
+0

Verwenden Sie duplicate = 0 mit variant dir? – bdbaddog

+0

Ja, Duplikat = Falsch – Knut

+0

Haben Sie meine Antwort unten versucht? – bdbaddog

Antwort

0

Dies sollte die richtige Syntax für das sein, was Sie tun möchten:

Command('main.elf', 'main.elf', Copy("$TARGET", "${SOURCE.srcpath}")) 

See: http://scons.org/doc/production/HTML/scons-man.html und für srcpath suchen den Abschnitt sehen Auswechslung.

Das, was Sie wirklich fragen, ist duplicate = teilweise. Ich bin mir nicht sicher, ob das funktioniert.

Können Sie die Elf-Datei mit dem vollständigen Pfad in der Befehlszeile zu Ihrem Tool angeben?

Command('main.elf', 'main.elf',"my_tool $TARGET ${SOURCE.srcpath}") 

Oder gleichwertig?

+0

a) 'srcpath' scheint keine Wirkung zu haben: scons: *** Abhängigkeiten gefunden: variant_dir/main.elf -> variant_dir/main.elf. b) Ich habe in den Dokumenten nichts über den Partial Mode gefunden (nur 0 und 1 für "duplicate"). c) Ich möchte nicht den vollständigen Pfad für alle nachfolgenden Tools verwenden. – Knut

+0

Um klar zu sein, als ich sagte, dass du nach duplicate = partially fragst, meinte ich nicht, dass es existiert, aber das war die Funktionalität, die du haben wolltest. – bdbaddog