CMakeLists.txt 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. set(TARGET QtTWAIN)
  2. set(TARGET_EXPORT ${TARGET}Targets)
  3. set(TARGET_CONFIG ${TARGET}Config)
  4. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  5. set(TARGET_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
  6. set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
  7. set(TARGET_BINDIR ${CMAKE_INSTALL_BINDIR})
  8. set(CMAKE_AUTOMOC ON)
  9. set(CMAKE_AUTORCC ON)
  10. find_package(Qt5 COMPONENTS Core Gui REQUIRED)
  11. include(${QT_TWAIN_CMAKE_DIR}/GenerateQtHeaders.cmake)
  12. include(${QT_TWAIN_CMAKE_DIR}/QtTWAINCommon.cmake)
  13. file(GLOB SOURCES
  14. qtwaincontext.cpp
  15. qtwaineventfilter.cpp
  16. qtwainscanner.cpp
  17. qtwainscannermanager.cpp
  18. qtwainscanner_p.cpp
  19. dsm/qdsminterface.cpp)
  20. file(GLOB HEADERS
  21. twain.h
  22. qtwaincontext_p.h
  23. qtwaineventfilter_p.h
  24. qtwain_p.h
  25. qtwainscanner_p.h
  26. dsm/qdsminterface.h)
  27. file(GLOB PUBLIC_HEADER
  28. qtwainglobal.h
  29. qtwainscanner.h
  30. qtwainscannermanager.h)
  31. generate_qt_headers(PUBLIC_HEADER ${PUBLIC_HEADER} COMPONENT ${TARGET})
  32. add_library(${TARGET} SHARED ${SOURCES})
  33. if(NOT DEFINED QT_QMAKE_EXECUTABLE)
  34. find_program(QT_QMAKE_EXECUTABLE "qmake")
  35. if(QT_QMAKE_EXECUTABLE STREQUAL QT_QMAKE_EXECUTABLE-NOTFOUND)
  36. message(FATAL_ERROR "Could not find qmake executable")
  37. endif()
  38. endif()
  39. extract_qt_variable(QT_HOST_DATA)
  40. target_compile_definitions(${TARGET} PRIVATE QT_BUILD_TWAIN_LIB PUBLIC QT_TWAIN_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
  41. QT_TWAIN_VERSION_MINOR=${PROJECT_VERSION_MINOR})
  42. set_target_properties(${TARGET} PROPERTIES VERSION ${PROJECT_VERSION} PUBLIC_HEADER "${PUBLIC_HEADER};${GENERATED_PUBLIC_HEADER}" OUTPUT_NAME ${TARGET})
  43. target_include_directories(${TARGET} PUBLIC
  44. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  45. $<BUILD_INTERFACE:${QT_TWAIN_BINARY_DIR}/include/${TARGET}>
  46. $<INSTALL_INTERFACE:${TARGET_INCLUDE_DIR}>
  47. )
  48. target_compile_features(${TARGET} PUBLIC cxx_std_14
  49. cxx_auto_type
  50. cxx_decltype
  51. cxx_final
  52. cxx_override
  53. cxx_nullptr
  54. cxx_lambdas
  55. cxx_func_identifier)
  56. target_link_libraries(${TARGET} PUBLIC Qt5::Core Qt5::Gui)
  57. add_library(${QT_TWAIN_PROJECT}::${TARGET} ALIAS ${TARGET})
  58. install(TARGETS ${TARGET}
  59. EXPORT ${TARGET_EXPORT} COMPONENT dev
  60. ARCHIVE DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  61. PUBLIC_HEADER DESTINATION ${TARGET_INCLUDE_DIR} COMPONENT dev
  62. LIBRARY DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  63. RUNTIME DESTINATION ${TARGET_BINDIR} COMPONENT lib)
  64. install(EXPORT ${TARGET_EXPORT} NAMESPACE ${QT_TWAIN_PROJECT}:: FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR} COMPONENT dev)
  65. include(CMakePackageConfigHelpers)
  66. configure_package_config_file(
  67. "${TARGET_CONFIG}.cmake.in" "${QT_TWAIN_BINARY_DIR}/${TARGET_CONFIG}.cmake"
  68. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  69. install(FILES "${QT_TWAIN_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}" COMPONENT dev)
  70. export(TARGETS ${TARGET} NAMESPACE ${QT_TWAIN_PROJECT}:: FILE ${TARGET_EXPORT}.cmake)