如何使用 rustc-env 标志指定环境变量?

2024-03-31

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


TL;DR

build.rs

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

src/main.rs

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

The 您链接的文档 https://doc.rust-lang.org/cargo/reference/build-scripts.html用于货物构建脚本:

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

在同一页面上,有一个描述 build.rs 输出的部分 https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script

构建脚本打印到 stdout 的所有行都会写入文件 [...] 以以下开头的任何行cargo:由 Cargo 直接解释。该行必须采用以下形式cargo:key=value,如下例所示:

cargo:rustc-env=FOO=bar

然后详细说明rustc-env:

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

env! https://doc.rust-lang.org/std/macro.env.html是一个宏。


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

No. env::var https://doc.rust-lang.org/std/env/fn.var.html用于读取程序运行时设置的环境变量runs,而不是当程序compiled.

也可以看看:

  • 使用 no_std 时是否可以在编译时从环境变量初始化变量? https://stackoverflow.com/q/51620782/155423
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 rustc-env 标志指定环境变量? 的相关文章

随机推荐