亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何一次構建多個包二進制文件

如何一次構建多個包二進制文件

Go
皈依舞 2022-01-17 16:24:01
我在各個地方都看到過這個問題,答案是“使用 cmd/foo,cmd/bar”類型的文件夾結構。這對我不起作用。這有效:$ du -a8   ./src/cmd/bin1/main.go8   ./src/cmd/bin18   ./src/cmd/bin2/main.go8   ./src/cmd/bin216  ./src/cmd8   ./src/shared/foo/foo.go8   ./src/shared/foo8   ./src/shared24  ./src并構建它:go build ./src/cmd/bin2go build ./src/cmd/bin1但是,我不知道有什么變化:go build ./src/...我可能需要一步構建所有此類二進制文件。這種布局:$ du -a8   ./cmd/bin1/main.go8   ./cmd/bin18   ./cmd/bin2/main.go8   ./cmd/bin216  ./cmd8   ./src/shared/foo/foo.go8   ./src/shared/foo8   ./src/shared8   ./src24  .似乎完全無法使用。go build ...似乎沒有任何命令組合可以構建 bin1 或 bin2。我能得到的最好的是go build cmd/bin1/main.go它給了我一個名為'main'的二進制文件。沒有幫助。所以,具體和詳細,包括go build實際構建單個二進制文件的命令,你是如何做到的?...為什么人們不斷給出使用頂級cmd文件夾的默認建議?如果你這樣做了,你如何構建這些二進制文件?
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

如果您不想將二進制文件安裝到$GOPATH/bin中,您可以做其他開源項目所做的事情,即創建一個腳本。


那里的大多數項目都有用于生成多個二進制文件的 make 文件和構建腳本。


在您的情況下,您可以構建一個腳本來迭代 中的包cmd,并go build在每個包上運行。


cd $GOPATH/someProject

for CMD in `ls cmd`; do

  go build ./cmd/$CMD

done

這導致:


[root@node1 test]# ls $GOPATH/someProject

bin1  bin2  cmd

您可以查看幾個熱門項目:


Grafana - https://github.com/grafana/grafana/blob/master/build.go

圓環 - https://github.com/coreos/torus/blob/master/Makefile

球童 - https://github.com/mholt/caddy/blob/master/dist/automate.go


查看完整回答
反對 回復 2022-01-17
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

go build幫助:

當編譯多個包或單個非主包時,build 編譯包但丟棄生成的對象,僅用作檢查包是否可以構建。

為了在一個目錄下構建所有包,您可以運行go install ./.... 您的所有軟件包都將被構建和安裝(即放在 $GOPATH/bin 下)。

在您的示例中,您將生成兩個可執行文件:$GOPATH/bin/bin1$GOPATH/bin/bin2

還有另一種方法是編寫一個簡單的 Makefile 來做你想做的事。


查看完整回答
反對 回復 2022-01-17
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

命令:

go install ./...

應該在當前目錄(即./...)下構建所有二進制文件并將它們放在$GOPATH/bin.


查看完整回答
反對 回復 2022-01-17
  • 3 回答
  • 0 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號