2015-06-26 6 views
6

Supponiamo che ho un gioco con la seguente struttura di directory:Copiare i file nella directory di destinazione dopo costruire

/src 
/resources 
Cargo.toml 

Vorrei cargo build per copiare i file nella directory resources e incollarli nella stessa directory il file eseguibile.

So che è possibile farlo utilizzando uno script di compilazione personalizzato, ma questo sembra essere un caso comune che merita un trattamento speciale. Quindi la domanda è: il carico fornisce un modo standard di copiare i file nella directory di destinazione (usando solo Cargo.toml)?

risposta

4

No, non è così.

È possibile spostare i file con build scripts, ma questi vengono eseguiti prima che la cassa venga creata perché il loro unico scopo è preparare l'ambiente (ad esempio, compilare librerie e spessori C).

Se si ritiene che questa sia una funzione importante, è possibile aprire una richiesta di funzione in Cargo issue tracker.

In alternativa, è possibile scrivere un makefile o uno script di shell che trasmetterà tutti gli argomenti di carico e quindi copiare la directory manualmente:

#!/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 

Ora è possibile eseguire il carico come

% ./make.sh build 
+2

ho aperto un problema come hai suggerito. Ecco il link se qualcuno è interessato: https://github.com/rust-lang/cargo/issues/1759 – aochagavia