最近在做项目时,因为原本已经下载了protobuf,又下载了grpc。但是grpc中包含了其对应的protobuf版本,所以发生了冲突。重新下了grpc后用琢磨了很久才搞明白怎样配置CMAKE。
本人使用的protoc版本为libprotoc 3.13.0。
首先配置CMAKE版本在3.15以上,连接protobuf为如下代码。
set(protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
target_link_libraries(your_exetable_project_name ${_PROTOBUF_LIBPROTOBUF})
最后一句话是链接静态库到可执行文件中
grpc的连接代码如下
find_package(Threads REQUIRED)
set(_REFLECTION gRPC::grpc++_reflection)
find_package(gRPC CONFIG REQUIRED)
set(_GRPC_GRPCPP gRPC::grpc++)
target_link_libraries(your_exetable_project_name ${_GRPC_GRPCPP})
链接静态库到可执行文件中
新版本的protobuf和grpc在linux下make install后不会直接生成.so文件在usr/local/bin中,而是生成.a文件。