重い腰を上げ、protobufのことを調べることにした。
https://github.com/protobuf-c/protobuf-c
protobuf-c-rpcというものもあるようだが、今回はprotobuf-cのみ見ていこう。
説明を読むと、`.proto` ファイルをコンパイルするツールのように見える。
コンパイルすると、 `.pb-c.c` と `.pb-c.h` が生成されて、それをincludeするなどして使うとよいのだろう。
まずは素直にビルドさせ・・・させてくれない。
`protobuf` が無いって言われるけど、それをビルドするんじゃ無いの???
いや、確かに手順として protobuf がいるとは書かれていたのだが、知識無しで進めるのは危険そうなので、protobufそのもののことを調べておこう。
https://developers.google.com/protocol-buffers/
Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data
らしい。
コンパイラとか何とかじゃなくて、メカニズムなのか。
XMLを意識しているようだが、まあそこはいいだろう。
JSONとかXMLのようなテキスト形式は、私にとっても扱いにくいので、バイナリでシリアライズしてくれるというのは大切だ。
.protoファイルに、データ型やメンバを記載していくようだ。
数字が出てきているが、Cでいうところのenum値みたいなものだろうか。
たぶん、この例の `message Person` が構造体みたいなもので、その構造体で使うものは、型を含めてこの中で定義するのだろう。
型はenum、構造体はmessage、かな。
まあ、推測で書いていくと、後で間違っていたときに書き直すのが面倒だから、ここまでにしておこう。
protoのバージョンは2と3があるらしい。
今はproto3が最新のようだから、そちらだけ見よう。
・・・量が多いので、やめた。
protocだけあればいいかと思ったのだが、そう簡単では無いらしい。
pkg-configでprotobufが無いと言われる。
CLAGSみたいなものを定義してもよいらしいが、C++版のインストールがいるのだろうか?
なんとなく分かったが、protobuf-cのprotoc-cは、protocのプラグインとして動作してCソースを生成するもののようだ。
そしてprotobuf-cがそれを使うためのライブラリ、ということか。
ならば、libprotobuf-devをapt installすればよいのか。。。だめだ、includeファイルが見つからないらしい。
checking google/protobuf/compiler/command_line_interface.h usability... no checking google/protobuf/compiler/command_line_interface.h presence... no checking for google/protobuf/compiler/command_line_interface.h... no configure: error: required protobuf header file not found
むう、apt installでは足りんのか。。。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。