|
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
|
|
|
project(helloworld_grpc)
|
|
# set color
|
|
string(ASCII 27 Esc)
|
|
set(ColourReset "${Esc}[m")
|
|
set(BoldGreen "${Esc}[1;32m")
|
|
set(BoldRed "${Esc}[31m")
|
|
set(LIB_BASE_DIR /root/CXX_ENVS/wenet_runtime)
|
|
# GRPC and Protocol Buffers libraries location
|
|
set(GRPC_ROOT ${LIB_BASE_DIR}/grpc-build)
|
|
# 运行参数
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pthread -fPIC")
|
|
list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}")
|
|
find_package(Threads REQUIRED)
|
|
message("${BoldGreen} ${CMAKE_PREFIX_PATH} ${ColourReset}")
|
|
find_package(gRPC CONFIG REQUIRED)
|
|
|
|
message(${BoldGreen}
|
|
GRPC_LIBRARY_DIR:${GRPC_LIBRARY_DIR} \n
|
|
grpc_cpp_plugin:${grpc_BINARY_DIR}/grpc_cpp_plugin${ColourReset})
|
|
|
|
set(PROTO_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
add_custom_command(
|
|
OUTPUT ${PROTO_DIR}/helloworld.pb.cc
|
|
${PROTO_DIR}/helloworld.pb.h
|
|
${PROTO_DIR}/helloworld.grpc.pb.cc
|
|
${PROTO_DIR}/helloworld.grpc.pb.h
|
|
COMMAND ${GRPC_ROOT}/bin/protoc
|
|
ARGS --grpc_out "${PROTO_DIR}"
|
|
--cpp_out "${PROTO_DIR}"
|
|
-I "${PROTO_DIR}"
|
|
--plugin=protoc-gen-grpc=${GRPC_ROOT}/bin/grpc_cpp_plugin
|
|
helloworld.proto)
|
|
add_library(hello_proto STATIC
|
|
${PROTO_DIR}/helloworld.pb.cc
|
|
${PROTO_DIR}/helloworld.pb.h
|
|
${PROTO_DIR}/helloworld.grpc.pb.cc
|
|
${PROTO_DIR}/helloworld.grpc.pb.h)
|
|
|
|
target_include_directories(hello_proto PUBLIC ${GRPC_INCLUDE_DIR} ${PROTOBUF_INCLUDE_DIR})
|
|
target_link_libraries(hello_proto ${GRPC_CLIENT_LIBS})
|
|
|
|
foreach(_target
|
|
greeter_client greeter_server
|
|
greeter_async_client greeter_async_client2 greeter_async_server)
|
|
add_executable(${_target} "${_target}.cc")
|
|
target_link_libraries(${_target} hello_proto ${GRPC_CLIENT_LIBS})
|
|
endforeach()
|