mkdir -p bin/ && VERSION=$(git describe --tags --always) && go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./... 这种多条命令,使用&&符号拼接起来,不易于维护,通常我们将它写在shell脚本里或者Makefile中,这不是我们本文讨论重点,下面以Makefile为例 VERSION=$(shell git describe ...
golang包的使用依赖一个重要的环境变量:GOPATH,无论是自己的代码还是第三方代码,都以GOPATH作为工作...
golang在编译时,通过加入- ldflags的参数可以替换编译的二进制包中的文件内容。例如替换版本号,构建日期,Git commit等信息时很方便。 例如替换main包中的变量如下: package main var version="N/A" func main() { fmt.Println(version) } 编译时加上参数:go build -a -ldflags "-X main.version=1.2" -o ...
fmt.Println("git log:", git) } 想要在build的时候改变time和git的值,可以这么做: powershell(cmd有问题): Copy go build -ldflags "-X 'main.buildTime=$(date)' -X 'main.gitHash=$(git log --pretty=format:"%h" -1)'" main.go linux: Copy go build -ldflags "-X 'main.time=$(date ...
fmt.Printf("%s\n%s\n%s\n", VERSION, BUILD_TIME, GO_VERSION) } 用如下命令编译,注意因为date和go version的输出有空格,所以main.BUILD_TIME和main.GO_VERSION必须使用引号括起来 go build -ldflags"-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`' -X 'main.GO_VERSION=`go version`'" ...
go build用-ldflags给go链接器传入参数,实际是给go tool link的参数,可以用go tool link --help查看可用的参数。 常用-X来指定版本号等编译时才决定的参数值。例如代码中定义var buildVer string,然后在编译时用go build -ldflags "-X main.buildVer=1.0" ... 来赋值。注意-X只能给string类型变量赋值。
GO111MODULE=off go test -ldflags="-X 'gotest.time=`date`' -X gotest.version=1.0.1" gotest -v === RUN TestBuild TestBuild: go_test.go:9: 2020年 8月 9日 星期日 18时57分49秒 CST TestBuild: go_test.go:10: 1.0.1 --- PASS: TestBuild (0.00s) ...
透過外在go build來設定這個變數go build -ldflags '-X main.flagString "test"'這樣你的結果會是 >> This build with ldflag: test 這個方式可以直接設定參數,讓initialize value透過外部設定來跑. ##Go build -tags 透過go build -tags可以達到加入不同的檔案在compiling time.由於這樣,你能夠放在這個檔案裡面...
go build⽤-ldflags给go链接器传⼊参数,实际是给go tool link的参数,可以⽤go tool link --help查看可⽤的参数。常⽤-X来指定版本号等编译时才决定的参数值。例如代码中定义var buildVer string,然后在编译时⽤go build -ldflags "-X main.buildVer=1.0" ... 来赋值。注意-X只能给string类型...
go build -o ex -ldflags="-X main.AppVersion=v1.0.0" 构建并运行程序,现在会展示在命令行中定义的版本: Version: v1.0.0 运行nm命令会看到变量已被初始化: 1170a90 D main.AppVersion 投建器赋予了我们重写数据符号(类型b或d)的能力,现在它们有了 Go 中的string类型。下面是那些符号列表: ...