Rust Cargo build e crosscompile para CPU específica

Sep 10 2020

Quero compilar dois binários para diferentes arquiteturas de destino (por exemplo, Skylake e Sandy Bridge). Normalmente, são dois comandos de carga longos:

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

Como posso configurar o cargo para construir ambos os binários (com nomes diferentes) do mesmo main.rs automaticamente? Idealmente no config.tomlou no Cargo.tomlpara que eu possa adicioná-lo a um repositório.

Respostas

1 WinterCicada Oct 04 2020 at 19:59

Você pode adicionar o seguinte texto ao seu 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

Mas parece que ele não pode compilar para duas arquiteturas de destino diferentes com uma config.toml, então você pode ter que criar duas config.tomle usar cargo --manifest-path PATH/TO/CONFIGpara compilar dois binários separadamente.