rust - 如何使用 rustc-env 标志指定环境变量?
问题描述
我想设置rustc-env=VAR=VALUE
以便我可以env::var("VAR")
在我的代码中使用它。但是,我不清楚在哪里指定它。我可以VAR
在 Makefile 中设置环境变量吗?
解决方案
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
用于在程序运行时读取环境变量设置,而不是在程序编译时读取。
也可以看看:
推荐阅读
- javascript - 获取 v-checkbox Vue.JS Vuetify 的状态
- android - 没有行的Android阅读光标
- javascript - 如何在发送到 Algolia 之前更改从 Parse 中提取的列名
- javascript - 如果用户已登录,Vue Router 不应重定向
- here-api - 有没有办法使用 Places 自动建议入口点来显示 District?
- react-native - 我在使用带有自动链接的 react-native-vector-icons 时遇到了麻烦。无论如何它都不会运行
- python - 如何沿特定轴交替/切片堆叠numpy数组?
- c++ - C ++将CSV文件解析为向量向量:丢失字符串第一个字符
- flutter - 需要帮助每隔 x 秒更新一次图表数据
- javascript - Vue.js - 将焦点转移到组件