go build 有没有参数可以在编译的时候指定图标资源文件的方法?

345 views
Skip to first unread message

灬猜想灬

unread,
Nov 7, 2013, 10:12:53 AM11/7/13
to golang...@googlegroups.com
可能经常会在一个目录下面放置多个图标资源文件.

编译的时候就会报错.
$ go build -n

#
# _/home/action/workspace/go/src/hello
#

mkdir -p $WORK/_/home/action/workspace/go/src/hello/_obj/
cd /home/action/workspace/go/src/hello
/home/action/.go/pkg/tool/linux_amd64/6g -o $WORK/_/home/action/workspace/go/src/hello/_obj/_go_.6 -p _/home/action/workspace/go/src/hello -D _/home/action/workspace/go/src/hello -I $WORK ./hell
o.go
/home/action/.go/pkg/tool/linux_amd64/pack grcP $WORK $WORK/_/home/action/workspace/go/src/hello.a $WORK/_/home/action/workspace/go/src/hello/_obj/_go_.6 ./hello.syso ./a.syso ./b.syso
cd .
/home/action/.go/pkg/tool/linux_amd64/6l -o hello -L $WORK $WORK/_/home/action/workspace/go/src/hello.a

这个时候又不想移动资源这些文件. 在go build参数里面找了一圈没有方法设置执行图标资源啊.
暂时只能使用手工一步一步操作,更加麻烦了..
# 图标源文件
hello.ico

# 创建rc文件
echo 'IDI_ICON1 ICON "hello.ico"' > hello.rc

# 生成资源目标文件
windres -o hello.syso hello.rc

# 编译Go源码, 输出目标文件
# go build -ldflags '-s -w'
go tool 8g -o hello.8 hello.go
go tool pack grcP . hello.a hello.8 hello.syso
go tool 8l -o hello.exe -L . hello.a





刘蕴唐

unread,
Nov 7, 2013, 10:16:34 AM11/7/13
to golang...@googlegroups.com

好奇的问一句,在哪里使用这些资源文件

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Golang-China”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 golang-china...@googlegroups.com
要在网络上查看此讨论,请访问 https://groups.google.com/d/msgid/golang-china/66372762-55a5-4aeb-8515-1e547410f636%40googlegroups.com。
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

minux

unread,
Nov 7, 2013, 10:31:25 AM11/7/13
to golang...@googlegroups.com


On Nov 7, 2013 10:12 AM, "灬猜想灬" <joe...@gmail.com> wrote:
>
> 可能经常会在一个目录下面放置多个图标资源文件.
>
> 编译的时候就会报错.
报什么错?

cai xiang

unread,
Nov 7, 2013, 10:33:14 AM11/7/13
to golang...@googlegroups.com
就是给编译出来的二进制文件加入图标而已.
在Windows下使用ResEdit很方便.


cai xiang

unread,
Nov 7, 2013, 10:34:18 AM11/7/13
to golang...@googlegroups.com
不能同时使用多个图标资源, 只能一个 (hello.syso)


cai xiang

unread,
Nov 7, 2013, 10:53:10 AM11/7/13
to golang...@googlegroups.com
如果目录下存在多个 .syso资源文件时, 直接在目录中执行 go build 报错:

$ go build                                                                                                                                            
# _/home/action/workspace/go/src/hello                                                                                                                                                            
too many .rsrc sections

snyh

unread,
Dec 15, 2013, 4:15:55 AM12/15/13
to golang...@googlegroups.com
没有windows下编程经验不清楚rsrc具体是啥格式。  如果是文本格式的话可以尝试// +build ignore   
go build会忽略带这个注释的文件。      
但看情况这个rsrc是一个编译好的资源文件, 没法改内容的;

但你可以自己利用go build -n的输出自己写一个脚本调整一下执行的步骤。 也是比较容易方便的

Larry Li

unread,
Dec 16, 2013, 3:10:06 AM12/16/13
to golang...@googlegroups.com

cai xiang

unread,
Dec 16, 2013, 9:07:20 AM12/16/13
to golang...@googlegroups.com

我的问题是存在多个图标资源的情况,没参数指定只使用其中一个, gc会自动加载所有的资源文件,所以报错了。
目前的办法就是在makefile里面将编译的几行代码手工编写进去,自己指定需要的图标资源。

Larry Li

unread,
Dec 16, 2013, 10:01:50 PM12/16/13
to golang...@googlegroups.com
可以自己编写 rc 文件包含多个图标资源。然后自己用 MinGW 的 windres 工具编译。
所以多个图标只需要一个 syso 文件即可。
对于 rc 文件,即 Windows Resource 请参看 MSDN


在 2013年12月16日 下午10:07,cai xiang <joe...@gmail.com>写道:

我的问题是存在多个图标资源的情况,没参数指定只使用其中一个, gc会自动加载所有的资源文件,所以报错了。
目前的办法就是在makefile里面将编译的几行代码手工编写进去,自己指定需要的图标资源。

--
--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina
---
您收到此邮件是因为您订阅了 Google 网上论坛的“Golang-China”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 golang-china...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages