zoukankan      html  css  js  c++  java
  • 解决protobuf import路径的问题

    网上关于protobuf import的文章不太详细,有些问题说的不全,比如import时的路径是在哪个目录中搜索的,比如:

    我有一个这样的目录结构,我怎么在demo2/protoDemo2.proto文件中导入demo1/test.proto中的文件呢?

    以下是protoDemo2.proto中的代码:

     1 syntax="proto3";
     2 import "test.proto";
     3 package protoDemo2;
     4 
     5 enum Book {
     6     UNKNOWN = 0;
     7     STUDY = 1;
     8     STORY = 2;
     9     TECH = 3;
    10     LAUGHT = 4;
    11 }
    12 
    13 enum Food {
    14     COOKIE = 0;
    15     HUMBURGER = 1;
    16     RICE = 2;
    17     BREAD = 3;
    18 }
    19 
    20 message Test2{
    21     test.ContactBook book = 1;
    22 }

    可以看到我import时没用路径,只使用了test.proto。

    在protoc中输入:

    protoc --proto_path=./src/protobufDemo/demo1/ --proto_path=./src/protobufDemo/demo2 --go_out=./src/protobufDemo/demo2 protoDemo2.proto

    执行protoc编译器生成go文件:

    --proto_path: 指定了要去哪个目录中搜索import中导入的和要编译为.go的proto文件,可以定义多个,我使用了两个proto_path,第一个指定了import "test.proto"中test.proto文件的搜索目录,第二个定义了要编译的文件protoDemo2.proto文件的目录。

    --go_out: 指定了生成的go文件的目录,我在这里把go文件放到了demo2这个目录中。

    最后的protoDemo2.proto, 定义了我要编译的文件是哪个文件。

    最后生成的go文件:

  • 相关阅读:
    杭电2054
    M1/M2总结
    软件开发相关的读书笔记 问题与方法
    代码复审1234跟我一起来
    电梯调度算法简述
    Pair_Work Project
    读书笔记摘录:
    Individual Project
    个人阅读作业——软件工程M1/M2的总结
    个人阅读作业2
  • 原文地址:https://www.cnblogs.com/hsnblog/p/9615742.html
Copyright © 2011-2022 走看看