我想在我的Go二进制文件c2go中添加--version
选项。
我知道传统上会将其硬编码到二进制文件中,但是由于它是alpha质量软件,并且经常更新,因此我想在go get
构建可执行文件(从git标记)时捕获版本。
这可能吗?
最佳答案
这不能完全回答您的问题,但是我解决类似需求的方法如下。
在main
包中,我定义了以下变量:
var (
buildInfo string
buildStamp = "No BuildStamp provided"
gitHash = "No GitHash provided"
version = "No Version provided"
)
在
main
函数中,执行以下代码:if buildInfo != "" {
parts := strings.Split(buildInfo, "|")
if len(parts) >= 3 {
buildStamp = parts[0]
gitHash = parts[1]
version = parts[2]
}
}
然后,我使用以下
bash
(Linux)Shell脚本构建应用程序:#!/bin/sh
cd "${0%/*}"
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/...
您将需要针对Windows和MacOS调整脚本。
希望能有所帮助。
关于git - 是否可以使用 “go get”获得git标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43623007/