Golang中如何指定go build的目录路径
Golang中如何指定go build的目录路径 我的项目文件结构如下:
project/main.go
project/go.mod
project/dependency1/mod.go
当我在 project 目录内时,可以运行 go build main.go。但是,当我尝试从其他任何位置运行时,会遇到如下错误:
src/lattigo/go/main.go:7:2: no required module provides package github.com/ldsec/lattigo/v2/ckks: go.mod file not found in current directory or any parent directory; see 'go help modules'
有没有办法在 Go 中指定当前目录?我尝试过 GOPATH,但它也不起作用。
更多关于Golang中如何指定go build的目录路径的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
你所说的“其他地方”具体是指什么?
go build 会在当前文件夹及其父文件夹中搜索项目。如果它找不到项目,那就没有东西可以构建。
而设置构建位置的方法就是使用 cd。
func main() {
fmt.Println("hello world")
}
更多关于Golang中如何指定go build的目录路径的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go中,你可以使用-C标志来指定构建的工作目录。这个标志在Go 1.20版本中引入,允许你在执行go命令之前切换到指定目录。
示例:
# 从任何位置构建,指定项目目录
go build -C /path/to/project main.go
# 或者使用相对路径
go build -C ../project main.go
如果你使用的是较旧的Go版本(1.20之前),可以使用以下替代方法:
- 使用cd命令组合:
cd /path/to/project && go build main.go
- 在Makefile中封装:
build:
cd /path/to/project && go build main.go
- 使用shell函数:
gobuild() {
local dir=$1
shift
(cd "$dir" && go build "$@")
}
# 使用示例
gobuild /path/to/project main.go
- 如果你需要频繁从不同位置构建,可以在go.mod中指定模块路径:
确保你的
go.mod文件正确定义了模块名称:
module github.com/yourusername/project
go 1.21
然后你可以使用模块感知模式从任何位置构建:
go build github.com/yourusername/project
对于你的具体错误,问题在于Go模块系统找不到go.mod文件。使用-C标志是最直接的解决方案,因为它会在执行构建前切换到包含go.mod文件的目录。

