下载
工程地址为https://github.com/protocolbuffers/protobuf。
以Protocol Buffers
v3.17.0为例:下载地址为Protocol Buffers v3.17.0。下载版本比较多:
需要编译的是C++版本,可以选择protobuf-cpp-3.17.0.tar.gz
,也可以选择Source code (tar.gz)
,下面以Source code (tar.gz)
为例。下载后的文件为protobuf-3.17.0.tar.gz
。
编译与安装
步骤如下:
-
tar -zxvf protobuf-3.17.0.tar.gz
-
cd protobuf-3.17.0
-
cd cmake
-
cmake . -Dprotobuf_BUILD_TESTS=OFF(
第一步
) -
cmake --build . (
或者使用make
) -
make install DESTDIR=安装目录(
也可以在第一步中通过-DCMAKE_INSTALL_PREFIX来设置安装目录
)
编译安装完成后,在安装目录下,将最底层中的文件夹bin(protoc可执行文件)、include(头文件)、lib64(库文件)放入到新文件夹protobuf中。(注意,这里生成的是静态库,如何生成动态库暂时不清楚。)。
最终protobuf
目录结构如下:
使用
创建一个test.proto,内容如下:
syntax = "proto3"; // 使用proto3语法
message SearchRequest {
string query = 1;
int32 page_number = 2;
int32 result_per_page = 3;
}
然后使用bin目录中的protoc生成test.pb.h和test.pb.cc文件,命令如下(–cpp_out指定生成文件位置):
protoc test.proto --cpp_out=.
最后是main.cpp,内容如下:
#include <iostream>
#include "test.pb.h"
int main()
{
SearchRequest request;
request.set_query("xxx");
std::cout << request.query() << std::endl;
return 0;
}
对其进行编译,命令如下:
g++ main.cpp test.pb.cc -std=c++11 -I protobuf/include/ -L protobuf/lib64/ -lprotobuf
编译成功,执行a.out,输出如下:
xxx