golang:构建带有 -o 标志的特定版本

Soo*_*Guy 7 go

我正在尝试构建该包github.com/go-delve/delve/cmd/dlv@2f13672765fe并将生成的可执行文件命名为dlv-dap.

在旧版本的 go(1.16 之前)下,我可以通过运行以下命令来完成此操作。

  • go get github.com/go-delve/delve/cmd/dlv@2f13672765fe
  • go build -o dlv-dap github.com/go-delve/delve/cmd/dlv@2f13672765fe

在此情况下v1.17不再起作用,而是命令go get github.com/go-delve/delve/cmd/dlv@2f13672765fe抛出以下错误

go:在当前目录或任何父目录中找不到 go.mod 文件。模块外部不再支持“go get”。要构建和安装命令,请使用带有版本的“go install”,例如“go install example.com/cmd@latest”有关更多信息,请参阅https://golang.org/doc/go-get-install-deprecation 或运行“go help get”或“go help install”。

阅读错误中提供的信息链接,似乎不再可以下载/构建具有自定义名称(例如-o my_custom_named_executable)的 golang 包。

我的理解正确还是有其他方法可以实现这一点?

Ben*_*ois 6

这里有 2 个解决方案可以满足您的需求:

第一个解决方案:go install

这会将可执行文件安装dlv到您的$GOPATH/bin目录中。

go install github.com/go-delve/delve/cmd/dlv@2f13672765fe
Run Code Online (Sandbox Code Playgroud)

第二种解决方案:从源安装:

git clone git@github.com:go-delve/delve.git
cd delve
git checkout 2f13672765fe
go build -o dlv ./cmd/dlv
Run Code Online (Sandbox Code Playgroud)

这将dlv在项目的根目录中构建可执行文件。

运行 Delve DAP

使用dlv dap子命令,dlv-dap只是它的别名。