go build 和 go run 在我拥有的一个小程序上非常慢(特别是 cgo 调用)。我想缓存二进制文件,以便它只在源更新时重建。我会使用带有 % 规则的简单 Makefile,但语言设计者声称 go 的构建支持不需要 Makefile。我忽略了另一种选择吗?Go 社区是否更喜欢另一个构建系统,也许是基于哈希的,用于缓存和重用构建产品?
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
go build
并且go install
很快(Go 1.10,2018 年第一季度)会快得多:请参阅此主题和此草稿文件。
go 命令现在维护已构建包和其他小元数据的缓存(CL 68116和CL 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
建设? ”。
- 2 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消