Go 如何在源目录之外构建?

Go 如何在源目录之外构建?,go,Go,我的go应用程序目录结构如下所示: /app go.mod go.sum main.go cd app; go build ; cd .. 当我构建应用程序时,我通常会将cd放入该目录并构建 cd app go build 我想知道我是否可以在没有cd的情况下构建应用程序目录。 当我转到go build/app时,它会打印当前目录或任何父目录中未找到的go:go.mod文件;请参阅“go帮助模块”我非常确定您需要在应用程序目录中构建 作为一种解决方法,如果您只是想在另一个目录的

我的go应用程序目录结构如下所示:

/app
  go.mod
  go.sum
  main.go
cd app; go build ; cd ..
当我构建应用程序时,我通常会将cd放入该目录并构建

cd app
go build
我想知道我是否可以在没有cd的情况下构建应用程序目录。
当我转到
go build/app
时,它会打印当前目录或任何父目录中未找到的
go:go.mod文件;请参阅“go帮助模块”

我非常确定您需要在应用程序目录中构建

作为一种解决方法,如果您只是想在另一个目录的命令行上,并想用一个命令运行构建,您可以将cd和go构建命令链接在一起,如下所示:

/app
  go.mod
  go.sum
  main.go
cd app; go build ; cd ..
这与键入的数量相同,但只需按几下向上箭头,就可能出现在命令历史记录中

注意,这是针对bash或类似UNIX样式的shell的。如果使用Windows cmd,那么我认为应该是这样的(未经测试,因为我现在没有现成的Windows机器访问权限):


要在源目录之外进行构建,只需将源目录与go file一起传递以进行构建 在您的特定情况下(假设您只是在/app之外)

那就是

go build app/main.go

您可能需要将go.mod移动到父目录(即在/app之外)

请参阅:
go build
需要从模块目录运行

最简单的方法是将
cd
放入模块目录(
cd/app
)以运行
go build
命令



(可能有某种方法可以创建一个虚假的本地
go.mod
文件,并从那里引用您的
/app
模块,但我无法设计出一种方法来实现这一点)

您的
go.mod
go.sum
文件应该位于项目的根目录下,然后您就可以运行
go-build/app
,而不会出现任何问题。切勿将文件名与
go-build