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

时间:2018-07-31 20:32:44

标签: rust

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

1 个答案:

答案 0 :(得分:0)

documentation that you linked用于货物构建脚本

  

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

在同一页面上,有一个section that describes outputs of build.rs

  

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

     
cargo:rustc-env=FOO=bar

然后它详细说明rustc-env

  

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

env!是宏。

TL; DR

build.rs

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

src / main.rs

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

  

使用env::var("VAR")

访问它

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

另请参阅: