登录
首页 >  Golang >  Go问答

导入proto文件并编译

来源:stackoverflow

时间:2024-03-30 19:00:32 186浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《导入proto文件并编译》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我在以下目录中有两个 proto 文件 -

parsers/
   > flights/
       > flights_proto/
           > flights.proto
           > flights.pb.go
   > flightspostbooking
       > flights_postbooking_proto/
           > flights_postbooking.proto
           > flights_postbooking.pb.go

以下是原型文件的内容 -

flights.proto
=============

package "flights_proto";

message flight {
   ...
}

flights_postbooking.proto
=========================

package "flights_postbooking_proto"
import "flights_proto/flights.proto"

message cancel {
    flight flight = 1;
    ...
}

我无法弄清楚如何编译 flights_postbooking.proto 以生成 pb.go 文件。

我尝试从 parsers 目录执行以下操作。

protoc --proto_path=flightspostbooking/flights_postbooking_proto --proto_path=flights/flights_proto flightspostbooking/flights_postbooking_proto/flights_postbooking.proto --go_out=plugins:flights_postbooking_proto

但是我收到错误 flights_proto/flights.proto: file not found


解决方案


parsers 目录运行 protoc,并使用原始文件的基目录,即 .

protoc --proto_path=. --go_out=plugins=grpc:flightpostbooking/flights_postbooking_proto flightpostbooking/flights_postbooking_proto/flights_postbooking.proto

由于您有 parsers 目录作为基础,因此您的导入应该是:

import "flights/flights_proto/flights.proto"

关键是使用相对于 proto_path 的导入路径。

好了,本文到此结束,带大家了解了《导入proto文件并编译》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>