美文网首页Gopher
0-1 在Windows下编译Golang程序

0-1 在Windows下编译Golang程序

作者: 大眼铅笔 | 来源:发表于2018-09-16 16:26 被阅读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

相关文章

  • 0-1 在Windows下编译Golang程序

    建议维持如下目录结构 编译过程一般来说分成如下几步 前从 git/svn 服务器抓取最新的版本 清理现场 获得时间...

  • Golang 交叉编译

    golang 跨平台(跨操作系统系统)编译 Windows 下编译 Mac 64位可执行程序: Windows 下...

  • go 实现交叉编译

    将Golang程序 在windows下编译成Linux下可执行的二进制文件并且执行 设置编译环境 在xx.go所在...

  • go 语言学习

    Golang 在 Mac、Linux、Windows 下如何交叉编译 Mac 下编译 Linux 和 Window...

  • docker 部署 golang 项目

    Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序 一、交叉编译 Windows 下编译 Linu...

  • Golang 交叉编译

    [TOC] 说明 本文交叉编译需要 1.5 以上 Golang Mac 下编译 windows 64 Golang...

  • 2019-08-06 go 交叉编译

    Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序 Mac 下编译 Linux 和 Windows...

  • go build 不同平台交叉编译

    Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。 Mac下编译Linux, Windows平...

  • golang一键多平台打包

    本文主要为了解决以下问题 Golang 在Windows下编译Linux下可执行文件 Golang 在window...

  • Golang交叉编译使用

    Linux下编译 Windows程序 Windows下编译Linux程序 GOOS:系统平台GOARCH:CPU类...

网友评论

    本文标题:0-1 在Windows下编译Golang程序

    本文链接:https://www.haomeiwen.com/subject/pgkfnftx.html