我正在構建一個庫,但我也希望它可以作爲獨立的二進制文件使用。我可以使用同名的庫和二進制文件嗎?
例如,假設我正在構建Tar的實現。 Tar通常用作命令,但它也可以用作庫。直覺上,我會這樣做:
src/
tar/
tar.go # belongs to package tar
main.go # imports tar and provides a main function
雖然這似乎並不奏效。從documentation,似乎「命令」應該有一個單獨的庫名稱。適應給予有這個例子的例子,我有以下目錄結構:
src/
tar/
tar.go # belongs to package tar
tarbin/
main.go # imports tar and provides a main function
然而,這將創建一個名爲tarbin
在$GOPATH/bin
不tar
命令。我找到的解決方法是做go build -o $GOPATH/bin/tar tar
,但我感覺我正在做一些可怕的錯誤。有沒有更好的辦法?
注意:我很清楚tar
是包含在標準庫中,我只用它作爲例子。
太棒了!我喜歡這個比我的'go build -o ...'更好......'破解... – tjameson
除了「go build」將會失敗,因爲你的二進制文件將被命名爲本地目錄(「tar」)。在這種情況下,您必須使用「go build -o」。 – Gravis
@Gravis我明白你的意思了。然而'go install'是你想用來構建二進制文件的東西 - 幾乎從不使用'go build',因爲它不緩存構建。我將編輯響應以刪除對「go build」的引用。 –