QtProtobufTestHelpers.cmake 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. function(qt_protobuf_internal_add_target_qml)
  2. set(options)
  3. set(oneValueArgs TARGET QMLDIR_FILE)
  4. set(multiValueArgs QML_FILES)
  5. cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  6. add_custom_target(${arg_TARGET}_qml DEPENDS ${arg_QML_FILES} ${arg_QMLDIR_FILE})
  7. foreach(QML_FILE IN LISTS arg_QML_FILES)
  8. add_custom_command(TARGET ${arg_TARGET}_qml
  9. COMMAND ${CMAKE_COMMAND} -E copy "${QML_FILE}" "${CMAKE_CURRENT_BINARY_DIR}"
  10. )
  11. endforeach()
  12. if(DEFINED ${arg_QMLDIR_FILE})
  13. add_custom_command(TARGET ${arg_TARGET}_qml
  14. COMMAND ${CMAKE_COMMAND} -E copy "${arg_QMLDIR_FILE}" "${CMAKE_CURRENT_BINARY_DIR}"
  15. )
  16. endif()
  17. add_dependencies(${arg_TARGET} ${arg_TARGET}_qml)
  18. endfunction()
  19. function(qt_protobuf_internal_add_target_windeployqt)
  20. if(WIN32)
  21. set(options)
  22. set(oneValueArgs "QML_DIR" "TARGET")
  23. set(multiValueArgs)
  24. cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  25. find_program(WINDEPLOYQT_EXECUTABLE "windeployqt" PATHS ${PATH})
  26. if(WINDEPLOYQT_EXECUTABLE)
  27. if(DEFINED arg_QML_DIR)
  28. set(QML_DIR --qmldir ${arg_QML_DIR})
  29. endif()
  30. add_custom_command(TARGET ${arg_TARGET} POST_BUILD
  31. COMMAND ${CMAKE_COMMAND}
  32. -E copy $<TARGET_FILE:${QT_PROTOBUF_NAMESPACE}::Protobuf>
  33. $<TARGET_FILE_DIR:${arg_TARGET}>
  34. COMMAND ${CMAKE_COMMAND}
  35. -E copy $<TARGET_FILE:${QT_PROTOBUF_NAMESPACE}::Grpc>
  36. $<TARGET_FILE_DIR:${arg_TARGET}>
  37. COMMAND ${WINDEPLOYQT_EXECUTABLE}
  38. ${QML_DIR} $<TARGET_FILE_DIR:${arg_TARGET}>)
  39. else()
  40. message(WARNING "windeployqt is not found in specified PATH! \
  41. Please, copy dependencies manually")
  42. endif()
  43. endif()
  44. endfunction()
  45. macro(qt_protobuf_internal_find_dependencies)
  46. find_package(${QT_VERSIONED_PREFIX} COMPONENTS Core Qml Network REQUIRED)
  47. find_package(Threads REQUIRED)
  48. if(NOT TARGET ${QT_PROTOBUF_NAMESPACE}::Protobuf)
  49. find_package(${QT_PROTOBUF_NAMESPACE} COMPONENTS Protobuf REQUIRED)
  50. endif()
  51. if(NOT TARGET ${QT_PROTOBUF_NAMESPACE}::Grpc)
  52. find_package(${QT_PROTOBUF_NAMESPACE} COMPONENTS Grpc REQUIRED)
  53. endif()
  54. if(QT_PROTOBUF_STATIC)
  55. add_definitions(-DQT_PROTOBUF_STATIC)# add_definitions is used because old cmake versions
  56. # compatibility
  57. endif()
  58. endmacro()