CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. set(TARGET protobufquickplugin)
  2. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  3. set(CMAKE_AUTOMOC ON)
  4. set(CMAKE_AUTORCC ON)
  5. find_package(Qt5 COMPONENTS Core Qml REQUIRED)
  6. include(${QT_PROTOBUF_CMAKE_DIR}/QtProtobufCommon.cmake)
  7. extract_qt_variable(QT_INSTALL_QML)
  8. set(TARGET_IMPORTS_DIR ${QT_INSTALL_QML}/QtProtobuf)
  9. file(GLOB SOURCES
  10. qtprotobufquickplugin.cpp)
  11. file(GLOB HEADERS
  12. qtprotobufquickplugin.h
  13. qtprotobufquick_global.h)
  14. add_library(${TARGET} SHARED ${SOURCES})
  15. target_link_libraries(${TARGET} PRIVATE Qt5::Core Qt5::Qml ${QT_PROTOBUF_PROJECT}::QtProtobuf)
  16. set_target_properties(${TARGET} PROPERTIES
  17. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf"
  18. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf"
  19. RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf"
  20. RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf")
  21. target_compile_definitions(${TARGET} PRIVATE QT_PROTOBUF_QUICK_LIB)
  22. #Check for QML private headers
  23. if(NOT DEFINED Qt5Qml_PRIVATE_INCLUDE_DIRS OR Qt5Qml_PRIVATE_INCLUDE_DIRS STREQUAL "")
  24. message(FATAL_ERROR "Qt protobuf project requires Qml private headers defined in system")
  25. endif()
  26. foreach(QML_PRIVATE_HEADER IN LISTS Qt5Qml_PRIVATE_INCLUDE_DIRS)
  27. message(STATUS "Check for QtQml private headers dir: ${QML_PRIVATE_HEADER}")
  28. if(NOT IS_DIRECTORY ${QML_PRIVATE_HEADER})
  29. message(FATAL_ERROR "Qt protobuf project requires Qml private headers defined in system ${QML_PRIVATE_HEADER}")
  30. endif()
  31. endforeach()
  32. target_include_directories(${TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../ ${Qt5Qml_PRIVATE_INCLUDE_DIRS})
  33. install(TARGETS ${TARGET} COMPONENT lib
  34. PUBLIC_HEADER DESTINATION "${TARGET_INCLUDE_DIR}" COMPONENT dev
  35. RUNTIME DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib
  36. LIBRARY DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib)
  37. add_custom_command(TARGET ${TARGET}
  38. COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/qmldir $<TARGET_FILE_DIR:${TARGET}>/qmldir
  39. COMMENT "Copying qmldir to binary directory")
  40. install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/qmldir DESTINATION "${TARGET_IMPORTS_DIR}" COMPONENT lib)