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之前),可以使用以下替代方法:

  1. 使用cd命令组合
cd /path/to/project && go build main.go
  1. 在Makefile中封装
build:
    cd /path/to/project && go build main.go
  1. 使用shell函数
gobuild() {
    local dir=$1
    shift
    (cd "$dir" && go build "$@")
}

# 使用示例
gobuild /path/to/project main.go
  1. 如果你需要频繁从不同位置构建,可以在go.mod中指定模块路径: 确保你的go.mod文件正确定义了模块名称:
module github.com/yourusername/project

go 1.21

然后你可以使用模块感知模式从任何位置构建:

go build github.com/yourusername/project

对于你的具体错误,问题在于Go模块系统找不到go.mod文件。使用-C标志是最直接的解决方案,因为它会在执行构建前切换到包含go.mod文件的目录。

回到顶部