33 个版本
| 0.0.38 | 2024 年 8 月 12 日 |
|---|---|
| 0.0.37 | 2024 年 6 月 26 日 |
| 0.0.36 | 2024 年 3 月 11 日 |
| 0.0.34 | 2023 年 10 月 9 日 |
| 0.0.19 | 2020 年 6 月 10 日 |
#366 在 构建工具 中
11,368 每月下载量
在 11 个 包中使用(3 个直接使用)
15KB
196 行
用法
首先,将 build-info 添加为 [dependency],将 build-info-build 添加为 [build-dependency] 到您的 Cargo.toml 中。通过分离这两个包,纯编译时依赖,如 git2,不会被编译到您的最终程序中。为此,请确保选择解析器 "2"。
如果尚不存在,请将一个 build.rs 添加到您的项目根目录中,在那里您调用 build_info_build::build_script()。这将收集编译时的构建信息。
然后,您可以使用 build_info! 宏添加一个在运行时返回版本信息的函数
build_info::build_info!(fn version);
或使用 build_info::format! 在编译时生成一个字符串
// sample output: "{sample v0.0.13 built with rustc 1.45.0-nightly (4bd32c980 2020-05-29) at 2020-05-30 11:22:46Z}"
build_info::format!("{{{} v{} built with {} at {}}}", $.crate_info.name, $.crate_info.version, $.compiler, $.timestamp)
示例 项目展示了这两种变体。
特性
build_info 包支持几个特性标志
- 运行时功能启用了
build_info::build_info!。默认情况下是启用的,但如果只想使用build_info::format!,可以安全地禁用此标志。要在一个no_std的环境中使用build_info,请禁用此功能。 chrono功能启用了chrono包的默认功能,该包被build_info::build_info!使用。默认情况下是禁用的。serde功能为build_info::build_info!使用的类型添加了Serialize/Deserialize支持。默认情况下是禁用的。
注意事项
构建脚本将在项目或当前签出的提交发生变化时请求 cargo 重新运行它。如果只有依赖项发生变化,则不一定重新运行(build_info_build::build_script 将尝试找到锁文件并依赖于它,但它并不真正了解任何更复杂的特性,例如 cargo 工作区)。如果您特定的用例需要为 build.rs 设置更严格的重新运行策略,请提交一个问题,并包括一个简短的描述,说明在更改时应该触发重建的附加文件。
版权和许可证
本项目的版权归其作者所有,并根据您的选择许可,许可协议如下
- Apache 许可证 2.0 版(https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(https://open-source.org.cn/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则任何有意提交以包含在本项目中的贡献,如 Apache-2.0 许可证中定义的,应按上述方式双重许可,不附加任何额外条款或条件。
依赖项
~1.4–2.2MB
~41K SLoC