2015-06-26 8 views
6

Nehmen wir an, ich ein Spiel mit der folgenden Verzeichnisstruktur haben:Kopieren von Dateien in das Zielverzeichnis bauen nach

/src 
/resources 
Cargo.toml 

Ich würde cargo build wie die Dateien im resources Verzeichnis kopieren und sie im selben Verzeichnis einfügen als die ausführbare Datei.

Ich weiß, dass es möglich ist, dies mit einem benutzerdefinierten Build-Skript zu tun, aber dies scheint ein häufiger Fall zu sein, der eine besondere Behandlung verdient. Die Frage ist also: bietet Cargo eine Standardmethode zum Kopieren von Dateien in das Zielverzeichnis (mit nur Cargo.toml)?

Antwort

4

Nein, tut es nicht.

Sie können Dateien mit build scripts verschieben, aber diese werden ausgeführt, bevor Ihre Kiste erstellt wird, da ihr einziger Zweck darin besteht, die Umgebung vorzubereiten (z. B. C-Bibliotheken und Shims kompilieren).

Wenn Sie dies für ein wichtiges Feature halten, können Sie eine Feature-Anforderung in Cargo issue tracker öffnen.

Alternativ können Sie auch eine Make-Datei oder ein Shell-Skript schreiben, das alle Argumente Ladung weiterleiten und dann manuell das Verzeichnis kopieren:

#!/bin/bash 

DIR="$(dirname "$0")" 

if cargo "[email protected]"; then 
    [ -d "$DIR/target/debug" ] && cp -r "$DIR/resources" "$DIR/target/debug/resources" 
    [ -d "$DIR/target/release" ] && cp -r "$DIR/resources" "$DIR/target/release/resources" 
fi 

Jetzt können Sie Fracht wie

% ./make.sh build 
+2

laufen öffnete ich ein Problem, wie du es vorgeschlagen hast. Hier ist der Link, wenn jemand interessiert ist: https://github.com/rust-lang/cargo/issues/1759 – aochagavia

Verwandte Themen