Rust Cargo build e crosscompile per CPU specifiche

Sep 10 2020

Voglio compilare due binari per differenti architetture di destinazione (es. Skylake e Sandy Bridge). Di solito si tratta di due lunghi comandi di carico:

RUSTFLAGS = "- C target-cpu = skylake" cargo build --target x86_64-unknown-linux-gnu --release

Come posso impostare cargo per costruire automaticamente entrambi i binari (con nomi diversi) dallo stesso main.rs? Idealmente in config.tomlo in Cargo.tomlmodo da poterlo aggiungere a un repository.

Risposte

1 WinterCicada Oct 04 2020 at 19:59

Puoi aggiungere il seguente testo al tuo config.toml:

[build]
target = x86_64-unknown-linux-gnu
rustflags = ["-C","target-cpu=skylake"]

[profile.dev]   #do not need to add `--release` now
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
lto = false
panic = 'unwind'
incremental = false
codegen-units = 16
rpath = false

Ma sembra che non sia possibile compilare per due diverse architetture di destinazione con una config.toml, quindi potrebbe essere necessario crearne due config.tomle utilizzarle cargo --manifest-path PATH/TO/CONFIGper compilare due binari separatamente.