为了账号安全,请及时绑定邮箱和手机立即绑定

`go build` 不必要地重建

`go build` 不必要地重建

Go
喵喔喔 2021-11-01 15:53:00
go build 和 go run 在我拥有的一个小程序上非常慢(特别是 cgo 调用)。我想缓存二进制文件,以便它只在源更新时重建。我会使用带有 % 规则的简单 Makefile,但语言设计者声称 go 的构建支持不需要 Makefile。我忽略了另一种选择吗?Go 社区是否更喜欢另一个构建系统,也许是基于哈希的,用于缓存和重用构建产品?
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

go build并且go install很快(Go 1.10,2018 年第一季度)会快得多:请参阅此主题草稿文件。

go 命令现在维护已构建包和其他小元数据的缓存(CL 68116CL 75473)。缓存默认为操作系统定义的用户缓存目录,但可以通过设置移动$GOCACHE
运行“ go env GOCACHE”查看当前有效设置。现在 go 命令永远不会从缓存中删除任何内容。如果缓存变得太大,请运行“ go clean -cache”而不是删除目录。该命令将保留缓存的log.txt文件。几周后,我会要求人们将他们的log.txt文件发布到 Github 问题,以便我们可以评估缓存大小管理方法。

构建缓存的主要作用是像 " go test" 和 " go build"这样的命令运行得很快,并且总是进行增量构建,尽可能积极地重用过去的构建步骤。
您不必使用“ go test -i”或“ go build -i”或“ go install”来获得快速增量构建。我们将不再需要教新用户这些变通方法。一切都会很快。

请注意,go install不会安装指定的软件包的依赖关系:见“什么go build建设? ”。


查看完整回答
反对 回复 2021-11-01
  • 2 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信