You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
2.8 KiB

  1. # On how to build grpc, you may refer to https://github.com/grpc/grpc
  2. # grpc version : v1.47.3
  3. set(GRPC_ROOT "${LIB_BASE_DIR}/grpc-build")
  4. function(GRPC_INSTALL DEST)
  5. # 建议手动构建,不手动构建容易出BUG
  6. if(NOT EXISTS ${GRPC_ROOT})
  7. execute_process(COMMAND mkdir -p "${GRPC_ROOT}")
  8. else ()
  9. execute_process(COMMAND rm -rf "${GRPC_ROOT}/*")
  10. endif ()
  11. if(NOT EXISTS ${LIB_BASE_DIR}/grpc-subbuild)
  12. execute_process(COMMAND mkdir -p "${LIB_BASE_DIR}/grpc-subbuild")
  13. else ()
  14. execute_process(COMMAND rm -rf "${LIB_BASE_DIR}/grpc-subbuild/*")
  15. endif ()
  16. message(STATUS "${BoldGreen}Install grpc third party library${ColourReset}")
  17. execute_process(
  18. 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 .
  19. WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild)
  20. execute_process(
  21. COMMAND make -j6
  22. WORKING_DIRECTORY ${LIB_BASE_DIR}/grpc-subbuild)
  23. execute_process(
  24. COMMAND make install
  25. WORKING_DIRECTORY ${grpc_build_dir})
  26. message("${BoldGreen}GRPC Installed !${ColourReset}")
  27. endfunction()
  28. set(protobuf_MODULE_COMPATIBLE TRUE)
  29. list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/protobuf/")
  30. find_package(Protobuf CONFIG REQUIRED)
  31. message("${BoldGreen}Using protobuf ${Protobuf_VERSION}${ColourReset}")
  32. list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/absl/")
  33. find_package(absl CONFIG REQUIRED)
  34. message("${BoldGreen}Using absl-cpp ${absl_VERSION}${ColourReset}")
  35. list(APPEND CMAKE_PREFIX_PATH "${GRPC_ROOT}/lib/cmake/grpc/")
  36. find_package(gRPC CONFIG REQUIRED)
  37. message("${BoldGreen}Using gRPC-cpp ${gRPC_VERSION}${ColourReset}")
  38. find_path(GRPC_BINARY_DIR grpc_cpp_plugin PATHS ${GRPC_ROOT}/bin)
  39. find_path(GRPC_LIBRARY_DIR cmake/grpc/gRPCConfig.cmake PATHS ${GRPC_ROOT}/lib)
  40. find_path(GRPC_INCLUDE_DIR grpc/grpc.h PATHS ${GRPC_ROOT}/include)
  41. mark_as_advanced(
  42. GRPC_BINARY_DIR
  43. GRPC_LIBRARY_DIR
  44. GRPC_INCLUDE_DIR
  45. )
  46. message("${BoldGreen}GRPC_INCLUDE_DIR is ${GRPC_INCLUDE_DIR}${ColourReset}")
  47. set(PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
  48. set(PROTOBUF_PROTOC protobuf::protoc)
  49. set(GRPC_CPP_PLUGIN_EXECUTABLE gRPC::grpc_cpp_plugin)
  50. set(REFLECTION gRPC::grpc++_reflection)
  51. set(GRPC_GRPCPP gRPC::grpc++)
  52. include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
  53. FIND_PACKAGE_HANDLE_STANDARD_ARGS(gRPC DEFAULT_MSG
  54. PROTOBUF_PROTOC REFLECTION GRPC_GRPCPP GRPC_CPP_PLUGIN_EXECUTABLE)
  55. if(third_party_libraries)
  56. list(APPEND third_party_libraries gRPC protobuf)
  57. endif ()