首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >protoc go_package的格式正确吗?

protoc go_package的格式正确吗?
EN

Stack Overflow用户
提问于 2020-05-08 04:07:04
回答 5查看 37.7K关注 0票数 27

我在Go中有一个现有的项目,其中我使用了Protocol buffers / gRPC。直到最近

选项是可选的,并且生成的Go包名称将与proto包名称相同。

此文件位于项目根目录中。生成的代码文件(

)都住在同一个地方。Proto文件:

代码语言:javascript
运行
复制
syntax = "proto3";

package authenticator;

service Authenticator {...}

生成命令指定我要在同一目录中输出:

代码语言:javascript
运行
复制
protoc --go_out=plugins=grpc:. authenticator.proto

今天我使用了新版本的protocol buffers编译器

..。在第一次运行时,a收到一个警告:

代码语言:javascript
运行
复制
WARNING: Missing 'go_package' option in "authenticator.proto",
please specify it with the full Go package path as
a future release of protoc-gen-go will require this be specified.
See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

建议的链接或多或少是无用的。但本教程更加明确:

go

_

package选项定义了包的导入路径,它将包含此文件的所有生成的代码。Go包名称将是导入路径的最后一个路径组件。例如,我们的示例将使用包名称"tutorialpb“。

选项go

_

package = "github.com/protocolbuffers/protobuf/examples/go/tutorialpb";

将此选项添加到proto文件并重新运行该命令后,输出将结束于此路径。类似于:

代码语言:javascript
运行
复制
$GOPATH/src/github.com//authenticator/github.com//authenticator/authenticator.pb.go

我已经尝试了以下替代方法

名称:

生成发生在正确的位置,但我得到了警告:

代码语言:javascript
运行
复制
WARNING: Deprecated use of 'go_package' option without a full import path...

那么,在不破坏项目布局的情况下,正确的方法是什么呢?

EN

Stack Overflow用户

发布于 2020-07-16 01:32:58

你只需要添加一个Go选项,它会告诉你添加相对于proto文件的文件。

代码语言:javascript
运行
复制
protoc --go_out=. --go_opt=paths=source_relative your_file.proto

这将使您的

_

在与您的file.pb.go相同的目录中

_

file.proto

票数 9
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61666805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档