最近在做项目时,因为原本已经下载了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文件。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐