golang Golang构建标志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang Golang构建标志相关的知识,希望对你有一定的参考价值。

$ GOOS=<okgoos> GOARCH=<okgoarch> go build ...
// Go 1.6.1, Some combinations are valid, some not
// The known operating systems.
var okgoos = []string{
	"darwin",
	"dragonfly",
	"linux",
	"android",
	"solaris",
	"freebsd",
	"nacl",
	"netbsd",
	"openbsd",
	"plan9",
	"windows",
}

// The known architectures.
var okgoarch = []string{
	"386",
	"amd64",
	"amd64p32",
	"arm",
	"arm64",
	"mips64",
	"mips64le",
	"ppc64",
	"ppc64le",
	"s390x",
}

// Valid combinations
var cgoEnabled = map[string]bool{
	"darwin/386":      true,
	"darwin/amd64":    true,
	"darwin/arm":      true,
	"darwin/arm64":    true,
	"dragonfly/amd64": true,
	"freebsd/386":     true,
	"freebsd/amd64":   true,
	"freebsd/arm":     true,
	"linux/386":       true,
	"linux/amd64":     true,
	"linux/arm":       true,
	"linux/arm64":     true,
	"linux/ppc64le":   true,
	"android/386":     true,
	"android/amd64":   true,
	"android/arm":     true,
	"netbsd/386":      true,
	"netbsd/amd64":    true,
	"netbsd/arm":      true,
	"openbsd/386":     true,
	"openbsd/amd64":   true,
	"solaris/amd64":   true,
	"windows/386":     true,
	"windows/amd64":   true,
	"linux/s390x":     true,
}

如何在golang中设置应用程序图标?

我刚刚在Windows上创建了我的第一个应用程序。

我该如何给它一个图标?

似乎没有任何构建标志来执行此操作,我知道golang不支持资源。

答案

您可以使用像akavel/rsrc这样的工具来生成包含在.rsrc部分中的指定资源的.syso文件,目的是在构建Win32 excecutables时由Go链接器使用。

请参阅lxn/walk应用程序示例,该应用程序将其他元数据嵌入其可执行文件中。

rsrc [-manifest FILE.exe.manifest] [-ico FILE.ico[,FILE2.ico...]] -o FILE.syso

-ico="":逗号分隔的.ico文件嵌入路径列表


这不同于将二进制数据嵌入到go程序中。 为此,请使用jteeuwen/go-bindata

要访问资产数据,我们使用生成的输出中包含的Asset(string) []byte函数。

data := Asset("pub/style/foo.css")
if len(data) == 0 {
    // Asset was not found.
}

// use asset data
另一答案

话题很长,实际上mingw只是要求,我们不需要第三方依赖。此外,资源文件*.rc对于win32可执行应用程序是必需的。最后,您可以在rc-demo找到该演示

1)使用Chocolatey:choco install mingw安装mingw

2)创建main.exe.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"
/>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

3)创建main.rc文件

100 ICON    "main.ico"
100 24      "main.exe.manifest"
101 RCDATA  "content.zip"

4)建立

在git-bash窗口中执行以下命令:windres -o main-res.syso main.rc && go build -i

另一答案

Joseph Spurrier有一个github包GoVersionInfo

Go语言的Microsoft Windows文件属性/版本信息和图标资源生成器

包创建一个syso文件,其中包含Microsoft Windows版本信息和可选图标。当您运行“go build”时,Go将在可执行文件中嵌入版本信息和可选图标以及可选清单。如果它与main()函数位于同一目录中,Go将自动使用syso文件。

以上是关于golang Golang构建标志的主要内容,如果未能解决你的问题,请参考以下文章

如何在golang中使用LDFLAGS的相对路径

golang命令行库Cobra的使用

golang实现命令行程序的使用帮助

golang golang构建简单的服务器,和静态文件

golang 使用golang构建Web应用程序的字段验证实例

golang mongo-driver filter 构建--bson和golang基础类型