CMakeLists.txt 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. set(TARGET ${GRPC_QUICK_PLUGIN_NAME})
  2. set(TARGET_EXPORT ${TARGET}Targets)
  3. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  4. set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
  5. find_package(Qt5 COMPONENTS Core Qml REQUIRED)
  6. set(CMAKE_AUTOMOC ON)
  7. set(CMAKE_AUTOMOC_MOC_OPTIONS -Muri=QtGrpc)
  8. set(CMAKE_AUTORCC ON)
  9. include(${QT_PROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
  10. extract_qt_variable(QT_INSTALL_QML)
  11. set(TARGET_IMPORTS_DIR ${QT_INSTALL_QML}/QtGrpc)
  12. file(GLOB SOURCES
  13. qquickgrpcsubscription.cpp
  14. qtgrpcquickplugin.cpp)
  15. file(GLOB HEADERS
  16. qtgrpcquickplugin.h
  17. qquickgrpcsubscription_p.h
  18. qtgrpcquick_global.h)
  19. add_library(${TARGET} ${SOURCES})
  20. if(NOT BUILD_SHARED_LIBS)
  21. if(WIN32)
  22. message(WARNING "Static version of QtProtobuf is not fully tested on Win32 platforms")
  23. endif()
  24. target_compile_definitions(${TARGET} PRIVATE QT_PROTOBUF_STATIC QT_STATICPLUGIN PUBLIC QT_GRPC_QUICK_PLUGIN_NAME="QtGrpcQuickPlugin")
  25. endif()
  26. target_link_libraries(${TARGET} PRIVATE Qt5::Core Qt5::Qml ${QT_PROTOBUF_PROJECT}::QtGrpc)
  27. set_target_properties(${TARGET} PROPERTIES
  28. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtGrpc"
  29. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtGrpc"
  30. RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/QtGrpc"
  31. RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/QtGrpc")
  32. target_compile_definitions(${TARGET} PRIVATE QT_GRPC_QUICK_LIB)
  33. if(NOT BUILD_SHARED_LIBS)
  34. add_library(${QT_PROTOBUF_PROJECT}::${TARGET} ALIAS ${TARGET})
  35. if(QT_PROTOBUF_INSTALL)
  36. install(TARGETS ${TARGET} COMPONENT lib
  37. EXPORT ${TARGET_EXPORT} COMPONENT dev
  38. ARCHIVE DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib
  39. RUNTIME DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib
  40. LIBRARY DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib)
  41. install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QT_PROTOBUF_PROJECT}:: FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR} COMPONENT dev)
  42. endif()
  43. export(TARGETS ${TARGET} NAMESPACE ${QT_PROTOBUF_PROJECT}:: FILE ${TARGET_EXPORT}.cmake)
  44. else()
  45. if(QT_PROTOBUF_INSTALL)
  46. install(TARGETS ${TARGET} COMPONENT lib
  47. ARCHIVE DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib
  48. RUNTIME DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib
  49. LIBRARY DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib)
  50. endif()
  51. endif()
  52. add_custom_command(TARGET ${TARGET}
  53. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/qmldir $<TARGET_FILE_DIR:${TARGET}>/qmldir
  54. COMMENT "Copying qmldir to binary directory")
  55. if(QT_PROTOBUF_INSTALL)
  56. install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/qmldir DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib)
  57. endif()