From 71a0d88e2686c4caf20039dfaf7abfd92579ed92 Mon Sep 17 00:00:00 2001 From: Gaute Lindkvist Date: Tue, 3 Nov 2020 09:12:32 +0100 Subject: [PATCH] Cross platform way of looking for CMake-versions of gRPC/Protobuf first * Then use PKG_CONFIG to try to find them, --- ApplicationCode/GrpcInterface/CMakeLists.txt | 66 ++++++++------------ 1 file changed, 25 insertions(+), 41 deletions(-) diff --git a/ApplicationCode/GrpcInterface/CMakeLists.txt b/ApplicationCode/GrpcInterface/CMakeLists.txt index 1ea5c20835..e6ac4cbb6e 100644 --- a/ApplicationCode/GrpcInterface/CMakeLists.txt +++ b/ApplicationCode/GrpcInterface/CMakeLists.txt @@ -53,68 +53,48 @@ set(SOURCE_GROUP_SOURCE_FILES ${CMAKE_CURRENT_LIST_DIR}/RiaGrpcNNCPropertiesService.cpp ${CMAKE_CURRENT_LIST_DIR}/RiaGrpcPdmObjectService.cpp) -if(MSVC) - # Find Protobuf installation Looks for protobuf-config.cmake file installed by - # Protobuf's cmake installation. - set(protobuf_MODULE_COMPATIBLE ON) - find_package(Protobuf CONFIG 3.0 QUIET) - if(Protobuf_FOUND) +# Find Protobuf installation Looks for protobuf-config.cmake file installed by +# Protobuf's cmake installation. +set(protobuf_MODULE_COMPATIBLE ON) +find_package(Protobuf CONFIG 3.0 QUIET) + +if(Protobuf_FOUND) message(STATUS "Using protobuf ${protobuf_VERSION}") - else() - message( - FATAL_ERROR - "Protocol Buffers not found. This is required to build with gRPC") - endif() - # Find gRPC installation Looks for gRPCConfig.cmake file installed by gRPC's - # cmake installation. - find_package(gRPC CONFIG REQUIRED) - message(STATUS "Using gRPC ${gRPC_VERSION}") + # Find gRPC installation Looks for gRPCConfig.cmake file installed by gRPC's + # cmake installation. + find_package(gRPC CONFIG REQUIRED) + message(STATUS "Using gRPC ${gRPC_VERSION}") - set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) - set(_PROTOBUF_PROTOC $) + set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) + set(_PROTOBUF_PROTOC $) - set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure gRPC::grpc_unsecure gRPC::gpr) - set(_GRPC_CPP_PLUGIN_EXECUTABLE $) - set(GRPC_LIBRARIES ${_GRPC_GRPCPP_UNSECURE} ${_PROTOBUF_LIBPROTOBUF}) + set(_GRPC_GRPCPP_UNSECURE gRPC::grpc++_unsecure gRPC::grpc_unsecure gRPC::gpr) + set(_GRPC_CPP_PLUGIN_EXECUTABLE $) + set(GRPC_LIBRARIES ${_GRPC_GRPCPP_UNSECURE} ${_PROTOBUF_LIBPROTOBUF}) - set_target_properties( + set_target_properties( ${GRPC_LIBRARIES} PROPERTIES MAP_IMPORTED_CONFIG_MINSIZEREL RELEASE MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) else() - find_package(gRPC CONFIG) - if(gRPC_FOUND) - message(STATUS "Found GRPC using find_package(gRPC CONFIG) ") - message(STATUS "Using gRPC ${gRPC_VERSION}") - set(GRPC_PACKAGE_LIBRARIES gRPC::gpr gRPC::grpc_unsecure - gRPC::grpc++_unsecure) - - set(_PROTOBUF_PROTOC $) - message(STATUS "_PROTOBUF_PROTOC : ${_PROTOBUF_PROTOC}") - - set(_GRPC_CPP_PLUGIN_EXECUTABLE $) - message( - STATUS "_GRPC_CPP_PLUGIN_EXECUTABLE : ${_GRPC_CPP_PLUGIN_EXECUTABLE}") - else() set(RESINSIGHT_GRPC_INSTALL_PREFIX "" CACHE PATH "gRPC : Install prefix for gRPC") if(NOT DEFINED RESINSIGHT_GRPC_INSTALL_PREFIX - OR NOT EXISTS ${RESINSIGHT_GRPC_INSTALL_PREFIX}) - message( + OR NOT EXISTS ${RESINSIGHT_GRPC_INSTALL_PREFIX}) + message( FATAL_ERROR - "You need a valid RESINSIGHT_GRPC_INSTALL_PREFIX set to build with gRPC" - ) + "You need a valid RESINSIGHT_GRPC_INSTALL_PREFIX set to build with gRPC" + ) endif() set(ENV{PKG_CONFIG_PATH} "${RESINSIGHT_GRPC_INSTALL_PREFIX}/lib/pkgconfig") find_package(PkgConfig REQUIRED) pkg_check_modules(GRPC REQUIRED grpc++_unsecure>=1.20 grpc_unsecure gpr - protobuf) + protobuf) set(_PROTOBUF_PROTOC "${RESINSIGHT_GRPC_INSTALL_PREFIX}/bin/protoc") set(_GRPC_CPP_PLUGIN_EXECUTABLE "${RESINSIGHT_GRPC_INSTALL_PREFIX}/bin/grpc_cpp_plugin") include_directories(AFTER ${GRPC_INCLUDE_DIRS}) - endif() endif() set(LINK_LIBRARIES @@ -277,6 +257,10 @@ add_library( ${SOURCE_GROUP_HEADER_FILES} ${SOURCE_GROUP_SOURCE_FILES} ${GRPC_HEADER_FILES} ${GRPC_CPP_SOURCES}) +if (RESINSIGHT_GRPC_INSTALL_PREFIX) + target_include_directories(${PROJECT_NAME} ${GRPC_INCLUDE_DIRS}) +endif() + target_link_libraries(${PROJECT_NAME} ${LINK_LIBRARIES}) if(MSVC)