我在Go中有一个现有的项目,其中我使用了Protocol buffers / gRPC。直到最近
选项是可选的,并且生成的Go包名称将与proto包名称相同。
此文件位于项目根目录中。生成的代码文件(
)都住在同一个地方。Proto文件:
syntax = "proto3";
package authenticator;
service Authenticator {...}
生成命令指定我要在同一目录中输出:
protoc --go_out=plugins=grpc:. authenticator.proto
今天我使用了新版本的protocol buffers编译器
..。在第一次运行时,a收到一个警告:
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文件并重新运行该命令后,输出将结束于此路径。类似于:
$GOPATH/src/github.com//authenticator/github.com//authenticator/authenticator.pb.go
我已经尝试了以下替代方法
名称:
生成发生在正确的位置,但我得到了警告:
WARNING: Deprecated use of 'go_package' option without a full import path...
那么,在不破坏项目布局的情况下,正确的方法是什么呢?
发布于 2020-07-16 01:32:58
你只需要添加一个Go选项,它会告诉你添加相对于proto文件的文件。
protoc --go_out=. --go_opt=paths=source_relative your_file.proto
这将使您的
_
在与您的file.pb.go相同的目录中
_
file.proto
发布于 2020-05-24 03:12:55
当我添加以下内容时,上述错误就消失了
具体如下:
发布于 2021-01-18 00:43:15
如果您正在使用
语法= "proto3";
..。在grpc代码生成processing.To修复此问题后,此问题必然会发生
步骤1:在您的
你的
_
文件
_
with.proto
option go_package = "pb;gen";
第2步:假设您想要生成
pb文件夹
用您的sutable name复制pb,然后在您的终端中运行cmd my case my all window.In is in
proto文件夹
在项目目录中
protoc -I=proto --go_out=. proto/*.proto
https://stackoverflow.com/questions/61666805
复制相似问题