1. 寫在前面
本文主要討論go install/build命令生成的文件命令和生成路徑問題。將從兩種情況討論:
文件夾下只有一個“命令源碼文件”
文件夾下既有命令源碼文件還有其他源碼文件
以下實驗主要在windows環(huán)境下完成呢,所以生成的可執(zhí)行文件以.exe后綴結尾
2. 文件夾下只有一個“命令源碼文件”
假設一個簡單的命令源碼文件所在的工程組織如下所示:
|__ src
|__ jeekTimeProject
|__ test
|__demo1.go
其中demo1.go的ackage name是 main
//demo1.go
package main
import (
"flag"
)
var name string
func init() {
flag.StringVar( name, "name", "everyone", "The greeting object.")
}
func main() {
flag.Parse()
fmt.Printf("Hello, %s!\n", name)
}
1、go build demo1.go:
在$GOPATH/src/jeekTimeProject/test目錄下生成可執(zhí)行文件 demo1.exe(以源碼文件的名字命名新文件)
2、go build:
在$GOPATH/src/jeekTimeProject/test目錄下生成可執(zhí)行文件 test.exe(以上層文件夾的名字命名新文件)
3、go build jeekTimeProject/test:
在$GOPATH/src/jeekTimeProject/test目錄下生成可執(zhí)行文件 test.exe(以上層文件夾的名字命名新文件)
4、go install demo1.go:
報錯,截圖如下所示:

5、go install:
在$GOPATH/bin目錄下生成可執(zhí)行文件 test.exe (以上層文件夾的名字命名新文件)
6、設置完$GOBIN環(huán)境變量后,運行go install demo1.go:
在$GOBIN目錄下生成可執(zhí)行文件demo1.exe
7、設置完$GOBIN環(huán)境變量后,運行go install:
在$GOBIN目錄下生成可執(zhí)行文件test.exe
3. 文件夾下既有命令源碼文件還有其他源碼文件
假設一個簡單的命令源碼文件所在的工程組織如下所示:
|__ src
|__ jeekTimeProject
|__ test
|__demo1.go
|__demo1_lib.go
其中demo1.go和demo1_lib.go的package name是 main
// demo1.go
package main
import (
"flag"
)
var name string
func init() {
flag.StringVar( name, "name", "everyone", "The greeting object.")
}
func main() {
flag.Parse()
hello(name)
}
//demo1_lib.go
package main
import "fmt"
func hello(name string) {
fmt.Printf("Hello, %s!\n", name)
}
1、go build demo1.go:
報錯,截圖如下所示:

2、go build demo1.go demo1_lib.go:
在$GOPATH/src/jeekTimeProject/test目錄下生成可執(zhí)行文件 demo1.exe(以源碼文件的名字命名新文件)
3、go build:
在$GOPATH/src/jeekTimeProject/test目錄下生成可執(zhí)行文件 test.exe(以上層文件夾的名字命名新文件)
4、go build jeekTimeProject/test:
在$GOPATH/src/jeekTimeProject/test目錄下生成可執(zhí)行文件 test.exe(以上層文件夾的名字命名新文件)
5、go install demo1.go:
報錯,截圖如下所示:

6、go install demo1.go demo1_lib.go:
報錯,截圖如下所示:

7、go install:
在$GOPATH/bin目錄下生成可執(zhí)行文件 test.exe (以上層文件夾的名字命名新文件)
8、設置完$GOBIN環(huán)境變量后,運行go install demo1.go:
報錯,截圖如下:

9、設置完$GOBIN環(huán)境變量后,運行go install demo1.go demo1_lib.go:
在$GOBIN目錄下生成可執(zhí)行文件demo1.exe
10、設置完$GOBIN環(huán)境變量后,運行go install:
在$GOBIN目錄下生成可執(zhí)行文件test.exe(以上層文件夾的名字命名新文件)
補充:go build后加文件和目錄的區(qū)別
go build + xxx.go:生成以xxx命名的可執(zhí)行文件
go build + dir / go build . / go build:生成以目錄名命名的可執(zhí)行文件
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- 淺談go build后加文件和目錄的區(qū)別
- go build 通過文件名后綴實現不同平臺的條件編譯操作
- go build和go install的區(qū)別介紹
- 解決go build不去vendor下查找包的問題