我的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'。
go build /app
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
ogsagwnx1#
请参见https://golang.org/ref/mod#commands-outside:go build需要从模块目录运行。最简单的方法是将cd导入模块目录(cd /app)以运行go build命令。(可能有一些方法可以创建一个虚假的本地go.mod文件,并从那里引用您的/app模块,但我无法设计出一个hack来实现这一点)
go build
cd
cd /app
go.mod
/app
yhxst69z2#
Go now可以在构建前借助标志-C更改目录:go build -C app“go子命令现在接受-C,以便在执行命令”Source:https://tip.golang.org/doc/go1.20
-C
go build -C app
cd ..
z4iuyo4d3#
我敢肯定,要建立你将需要在应用程序目录。作为一种解决方案,如果您只想在不同目录中的命令行上运行构建,并希望使用一个命令运行构建,您可以将cd和go构建命令链接在一起,如下所示:
cd app; go build ; cd ..
这是相同的输入量,但可以在您的命令历史记录中,只需按几下向上箭头即可。注意,这是针对bash或类似的UNIX风格shell的。如果使用Windows cmd,那么我认为它应该是这样的(没有测试,因为我现在没有随时访问Windows机器的权限):
cd app & go build & cd ..
3条答案
按热度按时间ogsagwnx1#
请参见https://golang.org/ref/mod#commands-outside:
go build
需要从模块目录运行。最简单的方法是将
cd
导入模块目录(cd /app
)以运行go build
命令。(可能有一些方法可以创建一个虚假的本地
go.mod
文件,并从那里引用您的/app
模块,但我无法设计出一个hack来实现这一点)yhxst69z2#
Go now可以在构建前借助标志
-C
更改目录:go build -C app
“go子命令现在接受-C,以便在执行命令”Source:https://tip.golang.org/doc/go1.20
cd ..
。Shell将保留在同一目录中)*z4iuyo4d3#
我敢肯定,要建立你将需要在应用程序目录。
作为一种解决方案,如果您只想在不同目录中的命令行上运行构建,并希望使用一个命令运行构建,您可以将cd和go构建命令链接在一起,如下所示:
这是相同的输入量,但可以在您的命令历史记录中,只需按几下向上箭头即可。
注意,这是针对bash或类似的UNIX风格shell的。如果使用Windows cmd,那么我认为它应该是这样的(没有测试,因为我现在没有随时访问Windows机器的权限):