0-1 在Windows下编译Golang程序

佛祖君 · · 1204 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

建议维持如下目录结构

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:佛祖君

查看原文:0-1 在Windows下编译Golang程序

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1204 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传