|
# 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)
|
|
# 建议手动构建,不手动构建容易出BUG
|
|
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(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 $<TARGET_FILE:protobuf::libprotobuf>)
|
|
set(PROTOBUF_PROTOC $<TARGET_FILE: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)
|
|
|