# On how to build grpc, you may refer to https://github.com/grpc/grpc # grpc version : v1.47.3 set(GRPC_ROOT "${LIB_BASE_DIR}/grpc-build") function(GRPC_INSTALL DEST) # install grpc if(NOT EXISTS ${GRPC_ROOT}) execute_process(COMMAND mkdir -p "${GRPC_ROOT}") else () execute_process(COMMAND rm -rf "${GRPC_ROOT}/*") endif () if(NOT EXISTS ${LIB_BASE_DIR}/grpc-subbuild) execute_process(COMMAND mkdir -p "${LIB_BASE_DIR}/grpc-subbuild") else () execute_process(COMMAND rm -rf "${LIB_BASE_DIR}/grpc-subbuild/*") endif () message(STATUS "${BoldGreen}Install grpc third party library${ColourReset}") execute_process( COMMAND cmake -DABSL_ENABLE_INSTALL=ON -DgRPC_INSTALL=ON -DCMAKE_CXX_STANDARD=17 -DABSL_CXX_STANDARD=17 -DABSL_USE_GOOGLETEST_HEAD=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_MODULE_LINKER_FLAGS="-Wl,--no-undefined -fPIC" -DCMAKE_INSTALL_PREFIX="/root/CXX_ENVS/wenet_runtime/grpc-build" -S ../grpc-v1.47.2 -B . WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild) execute_process( COMMAND make -j6 WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild) execute_process( COMMAND make install WORKING_DIRECTORY ${grpc_build_dir}) message("${BoldGreen}GRPC Installed !${ColourReset}") endfunction() set(CMAKE_CXX_STANDARD 14) set(protobuf_MODULE_COMPATIBLE TRUE) list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/protobuf/") find_package(Protobuf CONFIG REQUIRED) message("${BoldGreen}Using protobuf ${Protobuf_VERSION}${ColourReset}") list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/absl/") find_package(absl CONFIG REQUIRED) message("${BoldGreen}Using absl-cpp ${absl_VERSION}${ColourReset}") list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/grpc/") find_package(gRPC CONFIG REQUIRED) message("${BoldGreen}Using gRPC-cpp ${gRPC_VERSION}${ColourReset}") find_path(GRPC_BINARY_DIR grpc_cpp_plugin PATHS ${GRPC_ROOT}/bin) find_path(GRPC_LIBRARY_DIR cmake/grpc/gRPCConfig.cmake PATHS ${GRPC_ROOT}/lib) find_path(GRPC_INCLUDE_DIR grpc/grpc.h PATHS ${_GRPC_INCLUDE_DIR} ) mark_as_advanced( GRPC_BINARY_DIR GRPC_LIBRARY_DIR GRPC_INCLUDE_DIR ) message("${BoldGreen}GRPC_INCLUDE_DIR is ${GRPC_INCLUDE_DIR}${ColourReset}") set(PROTOBUF_LIBPROTOBUF $) set(PROTOBUF_PROTOC $) set(GRPC_CPP_PLUGIN_EXECUTABLE gRPC::grpc_cpp_plugin) set(REFLECTION gRPC::grpc++_reflection) set(GRPC_GRPCPP gRPC::grpc++) include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(gRPC DEFAULT_MSG PROTOBUF_PROTOC REFLECTION GRPC_GRPCPP GRPC_CPP_PLUGIN_EXECUTABLE)