在生成期间将符号值传递给Rust编译器
在我的Go构建中,我通常包括以下几行:在生成期间将符号值传递给Rust编译器,rust,timestamp,Rust,Timestamp,在我的Go构建中,我通常包括以下几行: buildInfo="`date -u '+%Y-%m-%dT%TZ'`|`git describe --always --long`|`git tag | tail -1`" go build -ldflags "-X main.buildInfo=${buildInfo} -s -w" ./cmd/... 然后在main中,我将buildInfo解析为三个单独的值,这些值可以与用法消息一起显示。这允许我查看可执行文件的编译时间戳、git哈希和semv
buildInfo="`date -u '+%Y-%m-%dT%TZ'`|`git describe --always --long`|`git tag | tail -1`"
go build -ldflags "-X main.buildInfo=${buildInfo} -s -w" ./cmd/...
然后在main
中,我将buildInfo
解析为三个单独的值,这些值可以与用法消息一起显示。这允许我查看可执行文件的编译时间戳、git哈希和semver编号
在Rust编译器中有类似的方法吗?您想使用构建脚本,如下所述: 您需要编写一个位于板条箱根目录下的
build.rs
Rust文件,该文件将在构建板条箱之前由cargo编译和运行,在该文件中,您可以输出某些字符串,这些字符串将依次由cargo解释以驱动编译
例如,如果使用以下内容编写生成脚本:
fn main() {
println!("cargo:rustc-env=BUILD_INFO=VALUE");
}
然后,项目中的源文件可以使用BUILD\u INFO
变量,如下所示:
let buildInfo = env!("BUILD_INFO");
例如,在您的情况下,构建脚本可以确定当前时间戳,或者调用
git
可执行文件并解析其输出。此问题或答案的任何方面都与SemVer无关。实际上,如果git标记包含SemVer,则与SemVer无关。