我正在尝试使用VScode浏览gVisor的代码。
然而,与其他Go项目不同,gVisor是使用 bazel构建的,并且源代码没有位于$GOROOT
或$GOPATH
下。可能这就阻止了VSCode Go扩展搜索gVisor
包。除了定义可以在相同目录下找到的情况外,大多数情况下都无法使用跳转到定义命令。
如何设置VSCode以处理bazel Go项目?特别是gVisor。谢谢!
我正在尝试使用VScode浏览gVisor的代码。
然而,与其他Go项目不同,gVisor是使用 bazel构建的,并且源代码没有位于$GOROOT
或$GOPATH
下。可能这就阻止了VSCode Go扩展搜索gVisor
包。除了定义可以在相同目录下找到的情况外,大多数情况下都无法使用跳转到定义命令。
如何设置VSCode以处理bazel Go项目?特别是gVisor。谢谢!
链接的 gVisor 规则现在代理 一个更加规范的实现
这个设置对我有效:
# in BUILD.bazel
load("@io_bazel_rules_go//go:def.bzl", "go_path")
go_path(
name = "gopath",
mode = "link",
deps = [
"//my/binary/here",
"//any/other/binaries/you/want/linked",
],
)
# in WORKSPACE
http_archive(
name = "io_bazel_rules_go",
sha256 = "8e968b5fcea1d2d64071872b12737bbb5514524ee5f0a4f54f5920266c261acb",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.28.0/rules_go-v0.28.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.28.0/rules_go-v0.28.0.zip",
],
)
bazel build :gopath
// In .vscode/settings.json
{
"go.gopath": "/YOUR ABSOLUTE PATH TO YOUR WORKSPACE//bazel-bin/gopath"
}
重新启动VSCode
享受吧!
注意:如果您的根目录中有go.mod文件,则此方法不起作用。