|
|
# 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_ROOT}/include)
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 protobuf::libprotobuf)
set(PROTOBUF_PROTOC 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)
|