1 个不稳定版本
0.1.0 | 2024年3月7日 |
---|
#279 在 构建工具
12KB
161 行
README
可以从 build.rs
中调用的辅助函数,用于从 Git 或 Mercurial 标签中提取版本号。
版本号主要遵循 Python PEP440 规范。如果当前目录对应一个版本标签,则返回该标签。否则,识别最近的标签,并返回形式为 tag.dev_N_+_hash_ 的字符串,其中 N 是标签和当前版本之间的修订次数。在两种情况下,如果当前目录已被修改,则将当前日期作为 YYYYMMDD
添加到本地版本标签中。
如果当前目录不是 Git 或 Mercurial 检出,则尝试从由 hg archive
生成的 .hg_archival.txt
文件中获取标签、距离和哈希,然后回退到 Cargo.toml
中定义的版本。由于无法检查代码是否已修改,vcs_version
将始终将日期后缀添加到 .hg_archival.txt
或 Cargo.toml
中的版本。
示例用法
将此放在您的 build.rs
use std::env;
use std::fs::File;
use std::io::Write;
use std::path::Path;
fn main()
{
let out_dir = env::var ("OUT_DIR").unwrap();
let mut f = File::create (Path::new (&out_dir).join ("build_info.rs")).unwrap();
let version = vcs_version::get_version();
writeln!(f, "pub const PKG_NAME: &'static str = \"{} {} {}\";",
env::var ("CARGO_PKG_NAME").unwrap(),
version,
env::var ("PROFILE").unwrap_or ("".into()))
.unwrap();
writeln!(f, "pub const PKG_VERSION: &'static str = \"{}\";",
version)
.unwrap();
}
然后在您的 main.rs
或 lib.rs
include!(concat!(env!("OUT_DIR"), "/build_info.rs"));
这将定义两个公共字符串常量
PKG_NAME
包含包括版本号的完整包名,PKG_VERSION
只包含版本号。
依赖项
~4–14MB
~185K SLoC