Go语言 如何构建到源目录之外?

bakd9h0s  于 2023-02-27  发布在  Go
关注(0)|答案(3)|浏览(156)

我的go应用程序目录结构是这样的:

/app
  go.mod
  go.sum
  main.go

当我构建应用程序时,我通常会将cd导入该目录并进行构建。

cd app
go build

我想知道我是否可以在没有cd的情况下构建到应用程序目录中。当我进入go build /app时,它会打印go: go.mod file not found in current directory or any parent directory; see 'go help modules'

ogsagwnx

ogsagwnx1#

请参见https://golang.org/ref/mod#commands-outside:
go build需要从模块目录运行。
最简单的方法是将cd导入模块目录(cd /app)以运行go build命令。
(可能有一些方法可以创建一个虚假的本地go.mod文件,并从那里引用您的/app模块,但我无法设计出一个hack来实现这一点)

yhxst69z

yhxst69z2#

Go now可以在构建前借助标志-C更改目录:
go build -C app
“go子命令现在接受-C,以便在执行命令”Source:https://tip.golang.org/doc/go1.20

  • (您不需要在此命令后运行cd ..。Shell将保留在同一目录中)*
z4iuyo4d

z4iuyo4d3#

我敢肯定,要建立你将需要在应用程序目录。
作为一种解决方案,如果您只想在不同目录中的命令行上运行构建,并希望使用一个命令运行构建,您可以将cd和go构建命令链接在一起,如下所示:

cd app; go build ; cd ..

这是相同的输入量,但可以在您的命令历史记录中,只需按几下向上箭头即可。
注意,这是针对bash或类似的UNIX风格shell的。如果使用Windows cmd,那么我认为它应该是这样的(没有测试,因为我现在没有随时访问Windows机器的权限):

cd app & go build & cd ..

相关问题