gRPC c++

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengfengdiandia/article/details/83591171

准备工作

Install grpc

$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc
$ cd grpc
$ git submodule update --init
$ make && sudo make install

Install protobuf

$ cd third_party/protobuf
$ ./configure
$ make && sudo make install
grpcdemo
├── cmake
│   ├── FindGRPC.cmake
│   └── FindProtobuf.cmake
├── CMakeLists.txt
├── protos
│   └── helloworld.proto
└── src
    ├── greeter_client.cc
    └── greeter_server.cc

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

project(HelloWorld)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

# Find Protobuf
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
find_package(Protobuf REQUIRED)
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
message(STATUS "Using protobuf ${protobuf_VERSION}")

# Find gRPC
find_package(GRPC REQUIRED)
set(_GRPC_GRPCPP_REFLECTION gRPC::grpc++_reflection)
message(STATUS "Using gRPC ${gRPC_VERSION}")

# Proto file
message(STATUS "CMAKE_CURRENT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}")
set(hw_proto ${CMAKE_CURRENT_SOURCE_DIR}/protos/helloworld.proto)

set(PROTO_SRC_DIR ${CMAKE_CURRENT_BINARY_DIR}/proto-src)
file(MAKE_DIRECTORY ${PROTO_SRC_DIR})

# Include generated *.pb.h files
include_directories(${PROTO_SRC_DIR})

# Generated sources
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_SRC_DIR} ${hw_proto})
grpc_generate_cpp(GRPC_SRCS GRPC_HDRS ${PROTO_SRC_DIR} ${hw_proto})

# Targets greeter_(client|server)
foreach(_target
  greeter_client greeter_server)
  add_executable(${_target} "${CMAKE_CURRENT_LIST_DIR}/src/${_target}.cc"
    ${PROTO_SRCS}
    ${GRPC_SRCS})
  target_link_libraries(${_target}
    ${_GRPC_GRPCPP_REFLECTION}
    ${_PROTOBUF_LIBPROTOBUF})
endforeach()

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

demo 地址:https://github.com/alandtsang/cppdemo/tree/master/src/grpcdemo

参考

https://github.com/grpc/grpc/blob/master/BUILDING.md

https://github.com/grpc/grpc/tree/master/examples/cpp/helloworld

https://cmake.org/cmake/help/v3.0/command/find_package.html

https://github.com/IvanSafonov/grpc-cmake-example

猜你喜欢

转载自blog.csdn.net/fengfengdiandia/article/details/83591171