之前介绍gprc在linux系统上的编译和安装,这里介绍如何如何在C++工程中引入对gprc库的依赖。以
首先,需要在cmake工程的Modules中加入FindGRPC.cmake和FindProtobuf.cmake这两个文件
然后在工程的主CMakeList.txt文件中加入:
#在这里增加包和模块寻找位置
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake/Modules)
#关于cmake如何寻找到的protobuf 和grpc的库地址,头文件和实现文件
find_package(Protobuf REQUIRED)
#find_package(gRPC CONFIG REQUIRED) 注意这里不是gRPC的原因是我们已经告知了编译系统在哪里寻找得到gRPC库
find_package(GRPC REQUIRED)
#把所有的protos放在一个目录下面~~~~!~~~~~~
set(PROTOS
core/protos/helloworld.proto
)
#所有要编译好的protos类放在这个目录下,一般来说都会在build目录下面找到
set(PROTO_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/core/proto_src)
file(MAKE_DIRECTORY ${PROTO_SRC_DIR})
include_directories(${PROTO_SRC_DIR})
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_SRC_DIR} ${PROTOS})
grpc_generate_cpp(GRPC_SRCS GRPC_HDRS ${PROTO_SRC_DIR} ${PROTOS})
#将所有的服务放在一个目录中(我们到后面会把现在的http都切换成grpc模式来做)
add_executable(greeter_server
${CMAKE_CURRENT_SOURCE_DIR}/core/src/http://greeter_server.cc
${PROTO_SRCS}
${GRPC_SRCS}
)
target_link_libraries(greeter_server
gRPC::grpc++_reflection
protobuf::libprotobuf
)
因为每个的proto文件都会产生对应的类文件,这里需要新建一个proto_src文件夹,最后使用cmake 检查是否生成了可执行文件