Rust Cargo 构建和交叉编译特定 CPU
Rust Cargo build and crosscompile for specific CPU
我想为不同的目标架构(例如 Skylake 和 Sandy Bridge)编译两个二进制文件。
这些通常是两个冗长的 cargo 命令:
RUSTFLAGS="-C target-cpu=skylake" cargo build --target
x86_64-unknown-linux-gnu --release
我如何设置 cargo 以自动从同一个 main.rs 构建两个二进制文件(具有不同的名称)?
理想情况下在 config.toml
或 Cargo.toml
中,这样我就可以将它添加到存储库中。
您可以将以下文字添加到您的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
但它似乎无法用一个 config.toml
为两个不同的目标体系结构编译,因此您可能必须创建两个 config.toml
并使用 cargo --manifest-path PATH/TO/CONFIG
编译两个二进制文件分开。
我想为不同的目标架构(例如 Skylake 和 Sandy Bridge)编译两个二进制文件。 这些通常是两个冗长的 cargo 命令:
RUSTFLAGS="-C target-cpu=skylake" cargo build --target x86_64-unknown-linux-gnu --release
我如何设置 cargo 以自动从同一个 main.rs 构建两个二进制文件(具有不同的名称)?
理想情况下在 config.toml
或 Cargo.toml
中,这样我就可以将它添加到存储库中。
您可以将以下文字添加到您的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
但它似乎无法用一个 config.toml
为两个不同的目标体系结构编译,因此您可能必须创建两个 config.toml
并使用 cargo --manifest-path PATH/TO/CONFIG
编译两个二进制文件分开。