CMakeLists.txt 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. set(TARGET QtProtobuf)
  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/${TARGET})
  8. set(CMAKE_AUTOMOC ON)
  9. set(CMAKE_AUTORCC ON)
  10. find_package(Qt5 COMPONENTS Core Qml REQUIRED)
  11. file(GLOB SOURCES
  12. qprotobufobject_p.cpp
  13. qtprotobuf.cpp
  14. qtprotobuflogging.cpp)
  15. file(GLOB HEADERS
  16. qprotobufobject_p.h
  17. qprotobufobject.h
  18. qtprotobuftypes.h
  19. qtprotobuf.h
  20. selfcheckiterator.h
  21. qtprotobuflogging.h)
  22. add_library(${TARGET} SHARED ${SOURCES})
  23. add_library(${QTPROTOBUF_COMMON_NAMESPACE}::${TARGET} ALIAS ${TARGET})
  24. set_target_properties(${TARGET} PROPERTIES VERSION ${PROJECT_VERSION} PUBLIC_HEADER "${HEADERS}" OUTPUT_NAME ${TARGET})
  25. target_include_directories(${TARGET} PUBLIC
  26. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  27. $<INSTALL_INTERFACE:${TARGET_INCLUDE_DIR}>
  28. )
  29. target_link_libraries(${TARGET} PUBLIC Qt5::Core Qt5::Qml)
  30. target_compile_features(${TARGET} PUBLIC cxx_std_14
  31. cxx_auto_type
  32. cxx_decltype
  33. cxx_final
  34. cxx_override
  35. cxx_nullptr
  36. cxx_lambdas
  37. cxx_func_identifier)
  38. install(TARGETS ${TARGET}
  39. EXPORT ${TARGET_EXPORT}
  40. ARCHIVE DESTINATION ${TARGET_LIB_DIR}
  41. PUBLIC_HEADER DESTINATION ${TARGET_INCLUDE_DIR}
  42. LIBRARY DESTINATION ${TARGET_LIB_DIR})
  43. install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR})
  44. include(CMakePackageConfigHelpers)
  45. configure_package_config_file(
  46. "${TARGET_CONFIG}.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CMAKE_DIR}/${TARGET_CONFIG}.cmake"
  47. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  48. configure_package_config_file(
  49. "${TARGET_CONFIG}Tree.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CONFIG}.cmake"
  50. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  51. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CMAKE_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
  52. export(TARGETS ${TARGET} NAMESPACE ${QTPROTOBUF_COMMON_NAMESPACE}:: FILE ${TARGET_EXPORT}.cmake)
  53. export(PACKAGE ${TARGET})
  54. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/QtProtobufGen.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/QtProtobufGen.cmake" @ONLY)
  55. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/QtProtobufGen.cmake" DESTINATION "${TARGET_CMAKE_DIR}")
  56. configure_file("${CMAKE_SOURCE_DIR}/cmake/ProtobufLookup.cmake" "${CMAKE_CURRENT_BINARY_DIR}/ProtobufLookup.cmake" COPYONLY)
  57. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ProtobufLookup.cmake" DESTINATION "${TARGET_CMAKE_DIR}")