CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. set(TARGET QtGrpc)
  2. set(TARGET_STATIC ${TARGET}Static)
  3. set(TARGET_EXPORT ${TARGET}Targets)
  4. set(TARGET_CONFIG ${TARGET}Config)
  5. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  6. set(TARGET_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
  7. set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
  8. set(TARGET_BIN_DIR ${CMAKE_INSTALL_BINDIR})
  9. set(CMAKE_AUTOMOC ON)
  10. set(CMAKE_AUTORCC ON)
  11. include(${QTPROTOBUF_CMAKE_DIR}/Coverage.cmake)
  12. include(${QTPROTOBUF_CMAKE_DIR}/GenerateQtHeaders.cmake)
  13. file(GLOB SOURCES qgrpcasyncreply.cpp
  14. qgrpcstatus.cpp
  15. qabstractgrpcchannel.cpp
  16. qgrpchttp2channel.cpp
  17. qabstractgrpcclient.cpp
  18. abstractcredentials.cpp
  19. sslcredentials.cpp
  20. insecurecredentials.cpp)
  21. file(GLOB HEADERS qgrpcasyncreply.h
  22. qgrpcstatus.h
  23. qabstractgrpcchannel.h
  24. qgrpchttp2channel.h
  25. qabstractgrpcclient.h
  26. abstractcredentials.h
  27. sslcredentials.h
  28. insecurecredentials.h
  29. qtgrpcglobal.h)
  30. protobuf_generate_qt_headers(PUBLIC_HEADERS ${HEADERS} COMPONENT ${TARGET})
  31. add_library(${TARGET} SHARED ${SOURCES})
  32. target_compile_definitions(${TARGET} PRIVATE QT_BUILD_GRPC_LIB)
  33. add_library(${QTPROTOBUF_COMMON_NAMESPACE}::${TARGET} ALIAS ${TARGET})
  34. set_target_properties(${TARGET} PROPERTIES VERSION ${PROJECT_VERSION} PUBLIC_HEADER "${HEADERS};${GENERATED_PUBLIC_HEADERS}" OUTPUT_NAME ${TARGET})
  35. target_include_directories(${TARGET} PUBLIC
  36. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  37. $<BUILD_INTERFACE:${QTPROTOBUF_BINARY_DIR}/include/${TARGET}>
  38. $<INSTALL_INTERFACE:${TARGET_INCLUDE_DIR}>
  39. )
  40. target_link_libraries(${TARGET} PUBLIC ${QTPROTOBUF_COMMON_NAMESPACE}::QtProtobuf Qt5::Core Qt5::Network)
  41. target_compile_features(${TARGET} PUBLIC cxx_std_14
  42. cxx_auto_type
  43. cxx_decltype
  44. cxx_final
  45. cxx_override
  46. cxx_nullptr
  47. cxx_lambdas
  48. cxx_func_identifier)
  49. install(TARGETS ${TARGET}
  50. EXPORT ${TARGET_EXPORT}
  51. ARCHIVE DESTINATION ${TARGET_LIB_DIR}
  52. PUBLIC_HEADER DESTINATION ${TARGET_INCLUDE_DIR}
  53. LIBRARY DESTINATION ${TARGET_LIB_DIR}
  54. RUNTIME DESTINATION ${TARGET_BIN_DIR})
  55. install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR})
  56. include(CMakePackageConfigHelpers)
  57. configure_package_config_file(
  58. "${TARGET_CONFIG}.cmake.in" "${QTPROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake"
  59. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  60. install(FILES "${QTPROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
  61. export(TARGETS ${TARGET} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE ${TARGET_EXPORT}.cmake)
  62. configure_file("${QTPROTOBUF_CMAKE_DIR}/gRPCLookup.cmake" "${QTPROTOBUF_BINARY_DIR}/gRPCLookup.cmake" COPYONLY)
  63. install(FILES "${QTPROTOBUF_BINARY_DIR}/gRPCLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
  64. add_coverage_target(TARGET ${TARGET})