建议维持如下目录结构
foo -->src
-->bin
-->pkg
编译过程一般来说分成如下几步
-
前从
git/svn
服务器抓取最新的版本 -
清理现场
-
获得时间戳,以便在后续编译过程中带入作为版本号的后缀
-
编译,携带若干参数(资源文件、不含调试信息、版本号,目标文件名称)
-
复制到特定文件夹
-
连同配置文件一起压缩,压缩文件带有上述时间戳
-
导出源代码,并压缩,压缩文件带有上述时间戳
-
清理现场
上述步骤连续做下来,没有一个工程师可以可以连续无差错做两遍。
这样的场景适合创建一个批处理文件,如果在Linux下的话就是Shell脚本文件。
下面是一个批处理文件的示例,请参阅。
<pre><code>
@echo 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.2.%ymd_hm%"
echo 版本号: %Version%
@echo on
go clean
go build -o YOUR_PROGRAMNAME.exe -ldflags "-s -w -X main.VERSION '%Version%'"
set PATH=%PATH%;C:\Program Files\WinRAR;
copy YOUR_PROGRAMNAME.exe "YOUR_PROGRAMNAME_v%ymd_hm%.exe"
rar a "YOUR_PROGRAMNAME_v%ymd_hm%.ra_" "YOUR_PROGRAMNAME_v%ymd_hm%.exe"
@echo off
echo ==========================================
@echo on
</code></pre>
如果要支持上述代码中的,在编译命令中引入版本号,那么需要在源代码文件,
即包含 main
方法的 go
文件中包含如下变量定义。
<pre><code>
//如下变量供编译器使用,不适用于golint的修改建议
var VERSION = "unknown"
</code></pre>
BTW
-
golint
认为上述变量命名不符合规范,请忽略之 -
关于
Windows
下批处理文件的更多知识,请google
之
网友评论