1. 写在前面
本文主要讨论go install/build命令生成的文件命令和生成路径问题。将从两种情况讨论:
- 文件夹下只有一个“命令源码文件”
- 文件夹下既有命令源码文件还有其他源码文件
以下实验主要在windows环境下完成呢,所以生成的可执行文件以.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)
}
-
go build demo1.go:
在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件demo1.exe(以源码文件的名字命名新文件) -
go build:
在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件) -
go build jeekTimeProject/test:
在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件) -
go install demo1.go:
报错,截图如下所示:
-
go install:
在$GOPATH/bin目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件) -
设置完
$GOBIN环境变量后,运行go install demo1.go:
在$GOBIN目录下生成可执行文件demo1.exe -
设置完
$GOBIN环境变量后,运行go install:
在$GOBIN目录下生成可执行文件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)
}
-
go build demo1.go:
报错,截图如下所示:
-
go build demo1.go demo1_lib.go:
在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件demo1.exe(以源码文件的名字命名新文件) -
go build:
在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件) -
go build jeekTimeProject/test:
在$GOPATH/src/jeekTimeProject/test目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件) -
go install demo1.go:
报错,截图如下所示:
-
go install demo1.go demo1_lib.go:
报错,截图如下所示:
-
go install:
在$GOPATH/bin目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件) -
设置完
$GOBIN环境变量后,运行go install demo1.go:
报错,截图如下:
-
设置完
$GOBIN环境变量后,运行go install demo1.go demo1_lib.go:
在$GOBIN目录下生成可执行文件demo1.exe -
设置完
$GOBIN环境变量后,运行go install:
在$GOBIN目录下生成可执行文件test.exe(以上层文件夹的名字命名新文件)
本文探讨了Go语言中goinstall与build命令在不同场景下的行为差异,包括单一命令源码文件与多源码文件的情况,以及如何通过设置$GOBIN环境变量来控制可执行文件的生成路径。
2287

被折叠的 条评论
为什么被折叠?



