gpt4 book ai didi

go - Bazel 构建、protobuf 和代码完成

转载 作者:数据小太阳 更新时间:2023-10-29 03:13:30 26 4
gpt4 key购买 nike

使用 Bazel 时要构建包含 .proto 文件的项目,我们可以使用例如 go_binarygo_proto_library 规则来创建二进制文件。生成的二进制文件将按预期工作,但从 .proto 文件生成的代码不在工作目录中。

因此,编辑器和 IDE 中的代码补全将不起作用。更糟糕的是,它们经常会打印有关无效导入语句的错误。

这是一个使用 Protocol Buffer 的示例,但可能还有其他类似的情况,例如使用第三方依赖项。

这通常是如何处理的?

最佳答案

我是为 Bazel 制定 Go 规则的工程师之一。不幸的是,我现在没有一个好的答案给你,但这个问题在我们的雷达上,Go 团队正在研究一个通用的长期解决方案。我已经提交了 bazelbuild/rules_go#512在我们的 GitHub 存储库上跟踪这个问题,当我们有更好的解决方案时我会更新这个答案。

问题是 Bazel 将生成的代码和其他工件存储在编辑器不知道的自己的内部目录中。我们正在设计和构建一个新的工作区抽象机制,允许工具(编辑器、IDE、guru 等工具)理解存储库中的所有源、生成的文件、包、导入和其他元数据,而无需直接与 Bazel 集成或其他构建系统。

作为临时解决方法,尝试使用 protoc 手动生成 .pb.go 文件。您可以将这些文件 checkin 您的存储库,但不将它们包含在您的 BUILD 文件中。这应该让编辑器和 IDE 知道生成的文件,但您仍然会在编译时生成它们的新版本。

关于go - Bazel 构建、protobuf 和代码完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44375665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com