首页 > 解决方案 > 如何使用 rustc-env 标志指定环境变量?

问题描述

我想设置rustc-env=VAR=VALUE以便我可以env::var("VAR")在我的代码中使用它。但是,我不清楚在哪里指定它。我可以VAR在 Makefile 中设置环境变量吗?

标签: rust

解决方案


TL;博士

构建.rs

fn main() {
    println!("cargo:rustc-env=VAR=VALUE");
}

src/main.rs

fn main() {
    let var = env!("VAR");
}

您链接的文档适用于 Cargo构建脚本

命令指定的 Rust 文件build(相对于包根目录)将在包中编译任何其他内容之前编译和调用,从而允许您的 Rust 代码依赖于构建或生成的工件。默认情况下,Cargo"build.rs"在包根目录中查找文件(即使您没有为 指定值build)。用于build = "custom_build_name.rs"指定自定义构建名称或build = false禁用构建脚本的自动检测。

在同一页面上,有一个部分描述了 build.rs 的输出

构建脚本打印到标准输出的所有行都写入文件 [...] 任何以开头的行都cargo:直接由 Cargo 解释。此行的格式必须为cargo:key=value,如下例所示:

cargo:rustc-env=FOO=bar

然后详细说明rustc-env

rustc-env=VAR=VALUE表示将指定的环境变量添加到运行编译器的环境中。然后可以通过env!已编译 crate 中的宏检索该值。这对于在 crate 的代码中嵌入额外的元数据很有用,例如 Git HEAD 的哈希或持续集成服务器的唯一标识符。

env!是一个宏。


使用它访问它env::var("VAR")

No.env::var用于在程序运行时读取环境变量设置,而不是在程序编译时读取。

也可以看看:


推荐阅读