我想设置Service
,以便可以在代码中使用rustc-env=VAR=VALUE
来访问它。但是,我不清楚在哪里指定它。我可以在Makefile中设置环境变量env::var("VAR")
吗?
答案 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!
是宏。
build.rs
fn main() {
println!("cargo:rustc-env=VAR=VALUE");
}
src / main.rs
fn main() {
let var = env!("VAR");
}
使用
访问它env::var("VAR")
不。 env::var
用于读取程序运行时设置的环境变量,而不是程序 编译时设置的环境变量。
另请参阅: