美文网首页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程序

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