#info #build #version #default #run-time #format #build-info

build-info-proc

build-info包的一部分:此包提供了过程宏

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日

1563过程宏

Download history 2487/week @ 2024-04-26 3264/week @ 2024-05-03 2583/week @ 2024-05-10 3151/week @ 2024-05-17 2974/week @ 2024-05-24 2150/week @ 2024-05-31 2406/week @ 2024-06-07 1573/week @ 2024-06-14 2031/week @ 2024-06-21 1867/week @ 2024-06-28 2026/week @ 2024-07-05 1650/week @ 2024-07-12 3430/week @ 2024-07-19 3265/week @ 2024-07-26 2488/week @ 2024-08-02 1873/week @ 2024-08-09

每月11,372次下载
9 个包中使用(通过 build-info

MIT/Apache

87KB
2.5K SLoC

使用方法

首先,将 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)

示例项目 sample 展示了两种变体。

特性

build_info 包支持几个特性标志

  • 运行时功能启用 runtime 特性,允许使用 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 许可证中定义的,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~7MB
~129K SLoC