热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Go编译时加入版本信息

-ldflags参数Go编译时可通过ldflags动态的为程序里某个变量赋值,我们可以利用这个特性来达到将Go的信息和git的commit信息编译到我们的二进制文件中。packag






-ldflags 参数

Go 编译时可通过 ldflags 动态的为程序里某个变量赋值,我们可以利用这个特性来达到将Go的信息和git 的commit 信息编译到我们的二进制文件中。


package main
import (
"fmt"
"os"
)
var (
gitHash string
buildTime string
goVersion string
)
func main() {
args := os.Args
if len(args) == 2 && (args[1] == "--version" || args[1] == "-v") {
fmt.Printf("Git Commit Hash: %s \n", gitHash)
fmt.Printf("Build TimeStamp: %s \n", buildTime)
fmt.Printf("GoLang Version: %s \n", goVersion)
return
}
}

这里我们定义了三个变量gitHash buildTime goVersion,我们可以通过下面这个编译命令将三个变量给赋值进去


go build -ldflags "-X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(git show -s --format=%cd)'" -o main.exe version.go
查看效果


Go其他参数

-o 输出的二进制文件名
-v 编译时显示包名
-p n 开启并发编译,默认情况下该值为 CPU 逻辑核数
-a 强制重新构建
-n 打印编译时会用到的所有命令,但不真正执行
-x 打印编译时会用到的所有命令
-race 开启竞态检测


git commit格式化

查看git commit 的其他格式化参数 https://git-scm.com/docs/pretty-formats





推荐阅读
author-avatar
焦作艾文斯
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有