CMakeLists.txt 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. set(TARGET serializationplugin)
  2. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  3. set(TARGET_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
  4. set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
  5. set(TARGET_BIN_DIR ${CMAKE_INSTALL_BINDIR})
  6. set(CMAKE_AUTOMOC ON)
  7. set(CMAKE_AUTORCC ON)
  8. find_package(Qt5 COMPONENTS Core REQUIRED)
  9. if(NOT DEFINED QT_QMAKE_EXECUTABLE)
  10. find_program(QT_QMAKE_EXECUTABLE "qmake")
  11. if(QT_QMAKE_EXECUTABLE STREQUAL QT_QMAKE_EXECUTABLE-NOTFOUND)
  12. message(FATAL_ERROR "Could not find qmake executable")
  13. endif()
  14. endif()
  15. execute_process(
  16. COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_QML
  17. OUTPUT_VARIABLE TARGET_IMPORTS_DIR
  18. OUTPUT_STRIP_TRAILING_WHITESPACE
  19. )
  20. set(TARGET_IMPORTS_DIR ${TARGET_IMPORTS_DIR}/QtProtobuf)
  21. file(GLOB SOURCES
  22. qtserializationplugin.cpp
  23. qprotobufjsonserializerimpl.cpp
  24. qprotobufserializerimpl.cpp)
  25. file(GLOB HEADERS
  26. qtserializationplugin.h
  27. qtserialization_global.h)
  28. add_library(${TARGET} SHARED ${SOURCES})
  29. target_link_libraries(${TARGET} PRIVATE Qt5::Core Qt5::Qml ${QTPROTOBUF_COMMON_NAMESPACE}::QtProtobuf)
  30. set_target_properties(${TARGET} PROPERTIES
  31. LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf"
  32. RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf"
  33. RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf"
  34. RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf")
  35. target_compile_definitions(${TARGET} PRIVATE SERIALIZATION_LIB)
  36. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/serializeinfo.json" "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf/serializeinfo.json" COPYONLY)
  37. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/QtProtobuf/serializeinfo.json" DESTINATION "${TARGET_CMAKE_DIR}")
  38. install(TARGETS ${TARGET}
  39. PUBLIC_HEADER DESTINATION "${TARGET_INCLUDE_DIR}"
  40. RUNTIME DESTINATION "${TARGET_IMPORTS_DIR}"
  41. LIBRARY DESTINATION "${TARGET_IMPORTS_DIR}")