2012-06-13 5 views

Antwort

8

Ein besserer Ansatz das Ziel und den Befehl() Builder zu verwenden wäre, wie folgt aus:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Command(target = "../program_name", 
     source = prgTarget, 
     action = Copy("$TARGET", "$SOURCE")) 

oder abhängig von der Situation, die Install() builder zu verwenden, wie folgt aus:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Install("../program_name", source = prgTarget) 
+0

+ 1 Das klingt nach einem guten Job für den Installer. Die Verwendung eines Befehlsgenerators klingt nach komplizierter Code. Kennen Sie irgendwelche Situationen, in denen ein Befehlsaufbau irgendwelche Vorteile hätte? – daramarak

+0

@daramarak, der Builder "Command()" ist flexibler, da es ein beliebiger Befehl sein kann, wie Skripte usw. Der Builder "Install()" dient nur zum "Installieren" (Kopieren) einer oder mehrerer Dateien/Ziele. – Brady

+0

Ich weiß, dass der Builder für Befehle flexibel ist, aber ich habe mich gefragt, ob es Fälle geben sollte, in denen ein Befehlsersteller zum Kopieren einer Datei anstelle des Builders für die Installation bevorzugt werden sollte? – daramarak