go build 和 go run 在我擁有的一個小程序上非常慢(特別是 cgo 調用)。我想緩存二進制文件,以便它只在源更新時重建。我會使用帶有 % 規則的簡單 Makefile,但語言設計者聲稱 go 的構建支持不需要 Makefile。我忽略了另一種選擇嗎?Go 社區是否更喜歡另一個構建系統,也許是基于哈希的,用于緩存和重用構建產品?
2 回答

茅侃侃
TA貢獻1842條經驗 獲得超22個贊
go build
并且go install
很快(Go 1.10,2018 年第一季度)會快得多:請參閱此主題和此草稿文件。
go 命令現在維護已構建包和其他小元數據的緩存(CL 68116和CL 75473)。緩存默認為操作系統定義的用戶緩存目錄,但可以通過設置移動
$GOCACHE
。
運行“go env GOCACHE
”查看當前有效設置?,F在 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 關注
- 225 瀏覽
添加回答
舉報
0/150
提交
取消