每次编译 Go 应用程序时,是否可以自动增加次要版本号?
我想在我的程序中设置一个版本号,并带有一个自动递增部分:
$ myapp -version MyApp version 0.5.132
0.5 是我设置的版本号,132 是每次编译二进制文件时自动递增的值。
这在 Go 中可能吗?
Go 链接器(go tool link)有一个选项来设置未初始化的字符串变量的值:
golang -X importpath.name=value Set the value of the string variable in importpath named name to
价值。请注意,在 Go 1.5 之前,此选项采用两个单独的参数。现在它需要在第一个 = 符号上拆分一个参数。
作为构建过程的一部分,您可以使用它设置版本字符串变量。您可以go使用-ldflags. 例如,给定以下源文件:
go
-ldflags
package main import "fmt" var xyz string func main() { fmt.Println(xyz) }
然后:
$ go run -ldflags "-X main.xyz=abc" main.go abc
为了main.minversion在构建时设置构建日期和时间:
main.minversion
go build -ldflags "-X main.minversion=`date -u +.%Y%m%d.%H%M%S`" service.go
如果不main.minversion以这种方式初始化而编译,它将包含空字符串。