对于我所拥有的一个小程序(特别是cgo调用)来说,构建和运行是非常缓慢的.我想去缓存二进制文件,以便它只在源更新时重建.我会使用带有%规则的简单Makefile,但语言设计者声称go的构建支持不需要Makefile.
还有另一种我忽略的选择吗?go社区是否更喜欢另一个构建系统,可能是基于哈希的,用于缓存和重用构建产品?
go build并且go install很快(转到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建? ".