如何为特定配置文件设置Cargo的configurable-env环境变量?
能否为特定Cargo配置文件设置环境变量?
不行,当前Cargo的configurable-env特性不支持你伪代码里那种[profile.test.env]或[profile.release.env]的写法——[env]配置段是全局生效的,无法直接嵌套在特定profile下。
不过你可以通过以下几种方式实现类似需求:
使用多份Cargo配置文件:分别创建对应不同profile的配置文件,比如
cargo-test.toml:[env] FOO_QTY = "2"和
cargo-release.toml:[env] FOO_QTY = "1000"运行时指定对应配置文件即可:
cargo --config cargo-test.toml test cargo --config cargo-release.toml build --release通过构建脚本动态设置:在项目根目录创建
build.rs,根据当前构建的profile注入环境变量:fn main() { match std::env::var("CARGO_PROFILE").as_deref() { Ok("test") => println!("cargo:rustc-env=FOO_QTY=2"), Ok("release") => println!("cargo:rustc-env=FOO_QTY=1000"), _ => println!("cargo:rustc-env=FOO_QTY=10"), } }这样Cargo在编译时会自动把对应的
FOO_QTY环境变量传递给你的程序。命令行临时注入:直接在执行Cargo命令前设置环境变量,适合临时场景:
# 测试环境 FOO_QTY=2 cargo test # 发布环境 FOO_QTY=1000 cargo build --release
内容的提问来源于stack exchange,提问作者Nikita Fedyashev
相关产品推荐
相关产品推荐

