Gopher

0-1 在Windows下编译Golang程序

2018-09-16  本文已影响29人  大眼铅笔

建议维持如下目录结构

foo -->src
    -->bin
    -->pkg

编译过程一般来说分成如下几步

  1. 前从 git/svn 服务器抓取最新的版本

  2. 清理现场

  3. 获得时间戳,以便在后续编译过程中带入作为版本号的后缀

  4. 编译,携带若干参数(资源文件、不含调试信息、版本号,目标文件名称)

  5. 复制到特定文件夹

  6. 连同配置文件一起压缩,压缩文件带有上述时间戳

  7. 导出源代码,并压缩,压缩文件带有上述时间戳

  8. 清理现场

上述步骤连续做下来,没有一个工程师可以可以连续无差错做两遍。
这样的场景适合创建一个批处理文件,如果在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

  1. golint 认为上述变量命名不符合规范,请忽略之

  2. 关于 Windows下批处理文件的更多知识,请 google

上一篇 下一篇

猜你喜欢

热点阅读