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
提交
取消
