這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
原文: Golang自動產生版本資訊
需求
golang程式在build時自動產生版本資訊,使用 ./helloworld –version可以查看版本和build時間
實現原理
使用連結選項-X設定一個二進位檔案中可以訪問的變數
12345678 |
package mainimport "fmt" var Version = "No Version Provided" func main() { fmt.Println("HelloWorld Version is:", Version)} |
123 |
go run -ldflags "-X main.Version 1.5" helloworld.go HelloWorld Version is: 1.5 |
12345678910 |
package mainimport \"fmt\" var buildstamp = \"no timestamp set\"var githash = \"no githash set\" func main() { fmt.Println(\"HelloWorld buildstamp is:\", buildstamp) fmt.Println(\"HelloWorld buildgithash is:\", githash)} |
123456 |
go build -ldflags \"-X main.buildstamp `date \'+%Y-%m-%d_%I:%M:%S\'` -X main.githash `git rev-parse HEAD`\" helloworld.go ./helloworld HelloWorld buildstamp is: 2015-09-08_05:58:49HelloWorld buildgithash is: 1adb00d88d832687eb4148a3871829fb73021c29 |
參考資料
golang-auto-build-versioning
其它一些相關的介紹:
- 編譯時間向 go 程式寫入 git 版本資訊
- command/link
- Setting Go variables from the outside