windows下go build -ldflags 设置文件版本号
时间: 2024-03-21 09:43:18 浏览: 29
在 Windows 下,可以使用以下命令设置 Go 编译后的可执行文件版本号:
```
go build -ldflags="-X main.version=1.0.0" main.go
```
其中,`-X` 表示设置一个字符串类型的变量,`main.version` 是你在代码中定义的版本变量名,`1.0.0` 是你要设置的版本号。你需要在代码中定义一个变量来存储版本号,例如:
```go
package main
var version string
func main() {
println("Version:", version)
}
```
然后在编译时使用上面的命令设置版本号。在程序中可以使用 `version` 变量来获取版本号。
相关问题
go build -ldflags "-H windowsgui -X main.productVersion=${productVersion} -s -w" 在window下设置产品版本号失效
在 Windows 下,使用 `go build` 命令设置产品版本号需要使用资源脚本文件 (resource script file),因为 Windows PE 文件格式不支持直接在命令行中设置版本号。
你需要创建一个资源脚本文件,例如 `version.rc`,并在其中定义产品版本号,例如:
```
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION ${productVersion}
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904b0"
{
VALUE "FileVersion", "1.0.0.0"
VALUE "ProductVersion", "${productVersion}"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x409, 1200
}
}
```
然后在编译时使用以下命令,指定资源脚本文件并设置其他参数:
```
go build -ldflags="-s -w" -ldflags="-H windowsgui -H=windowsgui -X main.productVersion=${productVersion} -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -ldflags=-w -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -ldflags=-s -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui -H=windowsgui -H=windowsgui -H windowsgui version.rc main.go
```
其中,`version.rc` 是你创建的资源脚本文件,`${productVersion}` 是你要设置的产品版本号,`main.go` 是你的 Go 源代码文件名。注意要把 `-s -w` 参数放在 `-ldflags` 后面,否则会导致产品版本号设置失效。
编译完成后,你可以使用资源查看器 (Resource Viewer) 或资源编辑器 (Resource Editor) 来查看或编辑可执行文件的版本信息。
go build -ldflags 指定多个参数
当需要指定多个 `-ldflags` 参数时,可以将它们用空格分隔开。例如:
```
go build -ldflags="-s -w -X main.version=1.0.0 -X main.buildTime=$(date +%Y-%m-%d_%H:%M:%S)"
```
上面的命令中,我们指定了四个 `-ldflags` 参数。其中 `-s` 和 `-w` 参数用于减小程序的体积,`-X` 参数用于设置程序的版本号和编译时间。我们可以根据需要添加或删除其他参数。
需要注意的是,如果 `-ldflags` 参数中包含空格,那么整个参数需要使用双引号括起来,否则空格会被解释为分隔符。
阅读全文