一、获取所需的工具
- GoVersionInfo
go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest
- 执行完毕后
GOPATH
的bin目录里出现一个goversioninfo.exe
则为成功。 > 此处请注意,建议把Go环境变量GO111MODULE
的值设置为auto
> > GO111MODULE=auto >
二、源码设置
- 关键代码:
//go:generate goversioninfo
- 在需要编译的文件第一行添加,如:
//go:generate goversioninfo
package main
三、定义版本信息
- 在项目目录创建一个名为
versioninfo.json
的json文件,内容如下:
{
"FixedFileInfo": {
"FileVersion": {
"Major": 1,
"Minor": 0,
"Patch": 0,
"Build": 0
},
"ProductVersion": {
"Major": 1,
"Minor": 0,
"Patch": 0,
"Build": 0
},
"FileFlagsMask": "3f",
"FileFlags ": "00",
"FileOS": "040004",
"FileType": "01",
"FileSubType": "00"
},
"StringFileInfo": {
"Comments": "这是程序描述",
"CompanyName": "这是公司名称",
"FileDescription": "这是文件说明",
"FileVersion": "v1.0.0.0",
"InternalName": "这是程序内部名称",
"LegalCopyright": "Copyright (c) 2022 GuHong",
"LegalTrademarks": "",
"OriginalFilename": "这是原始文件名",
"PrivateBuild": "",
"ProductName": "这是产品名称",
"ProductVersion": "v1.0.0.0",
"SpecialBuild": ""
},
"VarFileInfo": {
"Translation": {
"LangID": "0804",
"CharsetID": "04B0"
}
},
"IconPath": "icon.ico",
"ManifestPath": ""
}
四、编译程序
- 找一个ico图标命名为icon.ico放到项目目录。
- 然后在项目目录执行命令:
go generate
//或者执行
goversioninfo
成功则会在目录中生成一个resource.syso文件,只用生成一次,改变了json文件内容或图标的话,需要再次生成。
最后执行
代码语言:javascript复制go build //直接编译
//或者执行
go build -ldflags "-s -w" //减小编译后的文件大小
> 注:以上所有操作均在项目根目录下操作 >