我想设置rustc-env=VAR=VALUE以便我可以env::var("VAR")在我的代码中使用它。但是,我不清楚在哪里指定它。我可以VAR在 Makefile 中设置环境变量吗?
She*_*ter 12
构建.rs
fn main() {
println!("cargo:rustc-env=VAR=VALUE");
}
Run Code Online (Sandbox Code Playgroud)
src/main.rs
fn main() {
let var = env!("VAR");
}
Run Code Online (Sandbox Code Playgroud)
build命令指定的 Rust 文件(相对于包根目录)将在包中编译任何其他内容之前编译和调用,允许您的 Rust 代码依赖于构建或生成的工件。默认情况下,Cargo"build.rs"在包根目录中查找文件(即使您没有为 指定值build)。使用build = "custom_build_name.rs"指定一个自定义生成的名字或build = false以构建脚本的禁用自动检测。
在同一页面上,有一个部分描述了 build.rs 的输出
构建脚本打印到 stdout 的所有行都写入文件 [...] 任何以 开头的行
cargo:都由 Cargo 直接解释。此行必须采用 形式cargo:key=value,如下例所示:Run Code Online (Sandbox Code Playgroud)fn main() { println!("cargo:rustc-env=VAR=VALUE"); }
然后详细说明rustc-env:
rustc-env=VAR=VALUE表示指定的环境变量将被添加到编译器运行的环境中。然后可以通过env!编译的 crate 中的宏检索该值。这对于在 crate 的代码中嵌入额外的元数据很有用,例如 Git HEAD 的哈希或持续集成服务器的唯一标识符。
env! 是一个宏。
使用它访问它
env::var("VAR")
No.env::var用于读取程序运行时设置的环境变量,而不是程序编译时设置的。
也可以看看: