我想设置rustc-env=VAR=VALUE,这样我就可以在代码中使用env::var("VAR")访问它。但是,我不清楚在哪里指定它。我可以在Makefile中设置环境变量VAR吗?
rustc-env=VAR=VALUE
env::var("VAR")
VAR
mv1qrgav1#
build.rs
fn main() { println!("cargo:rustc-env=VAR=VALUE"); }
来源/main.rs
fn main() { let var = env!("VAR"); }
documentation that you linked用于Cargo * 构建脚本 *:由build命令指定的Rust文件(相对于包根目录)将在包中编译任何其他内容之前被编译和调用,允许您的Rust代码依赖于构建或生成的工件。默认情况下,Cargo在包根目录中查找"build.rs"文件(即使您没有为build指定值)。使用build = "custom_build_name.rs"指定自定义生成名称,或使用build = false禁用生成脚本的自动检测。在同一个页面上,有一个部分描述了www.example.com的输出build.rs构建脚本打印到stdout的所有行都被写入文件[...]任何以cargo:开头的行都直接由Cargo解释。这一行的格式必须是cargo:key=value,如下例所示:
build
"build.rs"
build = "custom_build_name.rs"
build = false
cargo:
cargo:key=value
cargo:rustc-env=FOO=bar
然后详细说明rustc-env:rustc-env=VAR=VALUE表示指定的环境变量将被添加到编译器运行的环境中。然后,该值可以由编译后的crate中的env!宏检索。这对于在crate的代码中嵌入额外的元数据非常有用,例如Git HEAD的哈希或持续集成服务器的唯一标识符。env!是宏。使用env::var("VAR")访问它env::var是用来阅读程序运行时设置的环境变量,而不是程序编译时设置的。参见:
rustc-env
env!
env::var
1条答案
按热度按时间mv1qrgav1#
TL;DR
build.rs
来源/main.rs
documentation that you linked用于Cargo * 构建脚本 *:
由
build
命令指定的Rust文件(相对于包根目录)将在包中编译任何其他内容之前被编译和调用,允许您的Rust代码依赖于构建或生成的工件。默认情况下,Cargo在包根目录中查找"build.rs"
文件(即使您没有为build
指定值)。使用build = "custom_build_name.rs"
指定自定义生成名称,或使用build = false
禁用生成脚本的自动检测。在同一个页面上,有一个部分描述了www.example.com的输出build.rs
构建脚本打印到stdout的所有行都被写入文件[...]任何以
cargo:
开头的行都直接由Cargo解释。这一行的格式必须是cargo:key=value
,如下例所示:然后详细说明
rustc-env
:rustc-env=VAR=VALUE
表示指定的环境变量将被添加到编译器运行的环境中。然后,该值可以由编译后的crate中的env!
宏检索。这对于在crate的代码中嵌入额外的元数据非常有用,例如Git HEAD的哈希或持续集成服务器的唯一标识符。env!
是宏。使用
env::var("VAR")
访问它env::var
是用来阅读程序运行时设置的环境变量,而不是程序编译时设置的。参见: