如何在vscodelaunch.json中编译多个go文件?

xsuvu9jc  于 2023-05-20  发布在  Go
关注(0)|答案(4)|浏览(162)

如果我有几个go文件需要放在主包中,我如何指定它们在launch.json中编译?我会将它们重构为包。但这个项目正在抵制。
要在命令行上运行它们,我必须用途:

go run main.go stuff.go other.go

如何将其包含在launch.json文件中?

{
    "name": "Launch myprog",
    "type": "go",
    "request": "launch",
    "mode": "debug",
    "program": "${workspaceRoot}/cmd/myprog/main.go",
     "args": ["param"]
},

我已经试过了显而易见的方法。我想做一些调试。
那么...我如何在launch.json中指定编译文件夹中的包,而不仅仅是一个特定的文件?
如果go run main.go等价于"program": "${workspaceRoot}/cmd/myprog/main.go"
那么,go run .等于什么?"program": "${workspaceRoot}/cmd/myprog/[?????]"
因为显而易见的事对我不起作用。
谢谢

wyyhbhjk

wyyhbhjk1#

使用“程序”:“.”对我来说很有效:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Package",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "program": ".",
      "cwd": "${workspaceFolder}",
    }
  ]
}
ua4mk5z4

ua4mk5z42#

我的系统一定有其他问题。因为在某个时候一切都开始起作用了…虽然我现在也在使用插件golang.go-nightly的夜间版本。它完美地修复了缺失的根调试功能…
现在工作正常……

{
   "name": "Prog",
   "type": "go",
   "request": "launch",
   "mode": "debug",
   "program": "${workspaceRoot}/src/cmd/prog/",
   "args": [""]
},
umuewwlo

umuewwlo3#

我相信你的问题中混合了一些概念,所以让我尝试一步一步地回答:

  • vscode中,launch.json文件是由vscode自动创建的,以帮助它进行调试,它不是go语言的一部分,也没有定义应用程序将如何运行或编译。更多参考请看How To Debug Go Code with Visual Studio Code
    *Compile您的应用程序(go build)意味着与特定包相关的所有文件都将转换为二进制文件。看看this article,了解包是如何链接到应用程序编译的。
    *运行您的应用程序可以使用go run来完成,这将具有与编译几乎相同的效果,除了此命令不会生成最终的可共享二进制文件。检查go run vs go build

现在,关于你的问题,如果你需要在vscode上启用正确的调试,可以看看gopls-vscode,但是如果你的代码因为依赖于其他文件/包而无法编译,那么可以看看上面提到的关于包的教程。
我希望我能给予你一些帮助。

nr9pn0ug

nr9pn0ug4#

这对我来说是这样的:
1.在包目录中运行go mod init以启动模块。这样,go build就可以在不指定.go文件的情况下工作
1.在项目的launch.json中,将program字段的值设置为包的根目录,而不指定任何源文件,即在您情况下,它将是"program": "${workspaceRoot}/cmd/myprog/"

相关问题