在真实项目打包过程中,存在如下需求
- 清理现场
- 构建时间戳
- 编译即
go build
命令,但是需要一些编译参数,输出可执行文件带时间戳 - 压缩
下文给出了批处理脚本和最佳实践,鼓励选用。
使用方法
修改
main.go
定义全局变量_VERSION_
并在main
方法中日志输出版本号1
2
3
4
5
6
7
8
9
10package main
import ( "log" )
// 如下变量供编译器使用,不适用于golint的修改建议 var _VERSION_ = "unknown"
func main() {
log.Printf("current program version: %s", _VERSION_)
}建议在项目目录下创建
gbuildwin.bat
批处理脚本复制如下内容到
gbuildwin.bat
批处理脚本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20echo off
echo 编译打包命令如下,产生文件名带时间戳
echo ==========================================
set /a t1=(1%time:~0,2%-100)*1
if %t1% LSS 10 set t1=0%t1%
set ymd_hm=%date:~0,4%%date:~5,2%%date:~8,2%%t1%%time:~3,2%%time:~6,2%
set Version=v2.4.%ymd_hm%"
echo 如果需要请修改GOPATH
@REM set GOPATH=M:\working\goYOURPROGRAM
echo 版本号: %Version%
@echo on
go clean
go generate
go build -o YOURPROGRAM.exe -ldflags "-s -w -X main._VERSION_=%Version%" main.go
set PATH=%PATH%;C:\Program Files\WinRAR;
copy YOURPROGRAM.exe "YOURPROGRAM_v%ymd_hm%.exe"
rar a "YOURPROGRAM_v%ymd_hm%.ra_" "YOURPROGRAM_v%ymd_hm%.exe"
@echo off
echo ==========================================
@echo on
批处理文件在Windows XP
和Windows 2008
下测试通过。
上述批处理脚本输出如下可执行文件 YOURPROGRAM_v20190103113702.exe
注意事项
- 使用上述批处理脚本时请将
YOURPROGRAM
替换成您的项目名称 - 根据修改设置
GOPATH