生成syso文件

rsrc是在Windows的Go程序中嵌入.ico和manifest资源的工具

载安装rsrc

go get github.com/akavel/rsrc

生成程序描述文件ico.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="x86"
    name="controls"
    type="win32"
></assemblyIdentity>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        ></assemblyIdentity>
    </dependentAssembly>
</dependency>
</assembly>

生成go程序嵌入文件

rsrc -manifest ico.manifest -o myapp.syso -ico myapp.ico

编译Go程序

myapp.syso文件放到相应go程序下,而后直接运行go build -ldflags '-H windowsgui -w'便可​
golang已经能够自动寻找子目录下的 syso 文件

其中ldflags中的参数,-H windowsgui为隐藏命令行窗口,因为我写的是gui程序,-w是裁剪gdb调试信息,这样生成的exe体积会小一些。