CMakeLists.txt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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_BINDIR ${CMAKE_INSTALL_BINDIR})
  9. set(CMAKE_AUTOMOC ON)
  10. set(CMAKE_AUTORCC ON)
  11. include(${QT_PROTOBUF_CMAKE_DIR}/Coverage.cmake)
  12. include(${QT_PROTOBUF_CMAKE_DIR}/GenerateQtHeaders.cmake)
  13. include(${QT_PROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
  14. file(GLOB SOURCES qgrpcasyncoperationbase.cpp
  15. qgrpcasyncreply.cpp
  16. qgrpcsubscription.cpp
  17. qgrpcstatus.cpp
  18. qabstractgrpcchannel.cpp
  19. qgrpchttp2channel.cpp
  20. qabstractgrpcclient.cpp
  21. qgrpccredentials.cpp
  22. qgrpcsslcredentials.cpp
  23. qgrpcinsecurecredentials.cpp
  24. qgrpcuserpasswordcredentials.cpp)
  25. file(GLOB HEADERS qgrpcasyncoperationbase_p.h
  26. qgrpcasyncreply.h
  27. qgrpcsubscription.h
  28. qgrpcstatus.h
  29. qabstractgrpcchannel.h
  30. qgrpchttp2channel.h
  31. qabstractgrpcclient.h
  32. qabstractgrpccredentials.h
  33. qgrpccredentials.h
  34. qgrpcsslcredentials.h
  35. qgrpcinsecurecredentials.h
  36. qgrpcuserpasswordcredentials.h
  37. qtgrpcglobal.h)
  38. protobuf_generate_qt_headers(PUBLIC_HEADER ${HEADERS} COMPONENT ${TARGET})
  39. if(QT_PROTOBUF_STATIC)
  40. if(WIN32)
  41. message(WARNING "Static version of QtProtobuf is not fully tested on Win32 platforms")
  42. endif()
  43. add_library(${TARGET} STATIC ${SOURCES})
  44. target_compile_definitions(${TARGET} PRIVATE QT_PROTOBUF_STATIC)
  45. else()
  46. add_library(${TARGET} SHARED ${SOURCES})
  47. endif()
  48. extract_qt_variable(QT_HOST_DATA)
  49. target_compile_definitions(${TARGET} PRIVATE QT_BUILD_GRPC_LIB)
  50. set_target_properties(${TARGET} PROPERTIES VERSION ${PROJECT_VERSION} PUBLIC_HEADER "${HEADERS};${GENERATED_PUBLIC_HEADER}" OUTPUT_NAME ${TARGET})
  51. target_include_directories(${TARGET} PUBLIC
  52. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  53. $<BUILD_INTERFACE:${QT_PROTOBUF_BINARY_DIR}/include/${TARGET}>
  54. $<INSTALL_INTERFACE:${TARGET_INCLUDE_DIR}>
  55. )
  56. target_link_libraries(${TARGET} PUBLIC ${QT_PROTOBUF_PROJECT}::QtProtobuf Qt5::Core Qt5::Network)
  57. target_compile_features(${TARGET} PUBLIC cxx_std_14
  58. cxx_auto_type
  59. cxx_decltype
  60. cxx_final
  61. cxx_override
  62. cxx_nullptr
  63. cxx_lambdas
  64. cxx_func_identifier)
  65. add_library(${QT_PROTOBUF_PROJECT}::${TARGET} ALIAS ${TARGET})
  66. install(TARGETS ${TARGET}
  67. EXPORT ${TARGET_EXPORT} COMPONENT dev
  68. ARCHIVE DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  69. PUBLIC_HEADER DESTINATION ${TARGET_INCLUDE_DIR} COMPONENT dev
  70. LIBRARY DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  71. RUNTIME DESTINATION ${TARGET_BINDIR} COMPONENT lib)
  72. install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QT_PROTOBUF_PROJECT}:: FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR} COMPONENT dev)
  73. include(CMakePackageConfigHelpers)
  74. configure_package_config_file(
  75. "${TARGET_CONFIG}.cmake.in" "${QT_PROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake"
  76. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  77. install(FILES "${QT_PROTOBUF_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}" COMPONENT dev)
  78. export(TARGETS ${TARGET} NAMESPACE ${QT_PROTOBUF_PROJECT}:: FILE ${TARGET_EXPORT}.cmake)
  79. configure_file("${QT_PROTOBUF_CMAKE_DIR}/gRPCLookup.cmake" "${QT_PROTOBUF_BINARY_DIR}/gRPCLookup.cmake" COPYONLY)
  80. install(FILES "${QT_PROTOBUF_BINARY_DIR}/gRPCLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}" COMPONENT dev)
  81. if(QT_PROTOBUF_STATIC) #extra config for .pri file in case if static build enabled
  82. set(QT_PROTOBUF_EXTRA_CONFIG "staticlib")
  83. endif()
  84. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/qt_lib_grpc.pri.in" "${QT_PROTOBUF_BINARY_DIR}/qt_lib_grpc.pri" @ONLY)
  85. install(FILES "${QT_PROTOBUF_BINARY_DIR}/qt_lib_grpc.pri" DESTINATION "${QT_HOST_DATA}/mkspecs/modules" COMPONENT dev)
  86. add_coverage_target(TARGET ${TARGET})