protoファイルコンパイル

1774 ワード

protobufは今ますます流行して、时には再びprotobufをプラスする必要があって、ふだんはすべて他の人の書き方を写して、しかし时には比較的に多いprotobufをプラスして、迅速に結果を検証して、しかも文法の問題がありますか.そこでローカルとdockerでprotobufをコンパイルする方法を探しました.
1.macにコンパイル環境をインストールする
インストール:
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-osx-x86_64.zip
unzip protoc-3.9.0-osx-x86_64.zip proto-3.9
cp proto-3.9/bin/protoc $PATH

上記のコマンドがノックされたら、protoファイルを編集してテストすることができます.ここで私が使用している公式の例では、まずtutorialフォルダを作成しました.
mkdir tutorial

tutorialにprotoファイルaddressbook.protoを作成します.
syntax = "proto3";
package tutorial;
message Person {
  string name = 1;
  int32 id = 2;  // Unique ID number for this person.
  string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    string number = 1;
    PhoneType type = 2;
  }

  repeated PhoneNumber phones = 4;

}

// Our address book file is just one of these.
message AddressBook {
  repeated Person people = 1;
}

コンパイルコマンドを実行するには、次の手順に従います.
protoc -I=./tutorial --go_out=./tutorial ./tutorial/*.proto

これにより、tutorialフォルダの下に別のファイルaddressbook.pb.goが正常に作成されたことがわかります.
.
└── tutorial
    ├── addressbook.pb.go
    └── addressbook.proto

2.dockerコンパイルprotobuf
ネット上で私はznly/protocというdocker imageにprotobufコンパイルのツールが含まれていることを発見しました.そのため、私たちは直接次のコマンドを実行してtutorialの下のprotoファイルをコンパイルすることができます.
docker run --rm -v $(PWD):$(PWD) -w $(PWD) znly/protoc -I=./tutorial --go_out=./tutorial ./tutorial/*.proto

まとめ
ここではprotobufをインストールしてコンパイルする過程を簡単に記録し、dockerというツールがあり、protobufをコンパイルするのも簡単で、protobufの文法については公式ドキュメントを参照することができます.