QtVersionAbstraction.cmake 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. include (MacroOptionalFindPackage)
  2. include (MacroLogFeature)
  3. option(BUILD_WITH_QT4 "Build with Qt4 no matter if Qt5 was found" OFF)
  4. if( NOT BUILD_WITH_QT4 )
  5. find_package(Qt5Core QUIET)
  6. if( Qt5Core_DIR )
  7. find_package(Qt5Widgets QUIET)
  8. find_package(Qt5Quick QUIET)
  9. find_package(Qt5PrintSupport QUIET)
  10. find_package(Qt5WebKit QUIET)
  11. find_package(Qt5Location QUIET)
  12. find_package(Qt5Network QUIET)
  13. find_package(Qt5Sensors QUIET)
  14. find_package(Qt5Xml QUIET)
  15. # find_package(Qt5WebKitWidgets QUIET)
  16. if(APPLE)
  17. find_package(Qt5MacExtras QUIET)
  18. endif()
  19. message(STATUS "Using Qt 5!")
  20. # We need this to find the paths to qdbusxml2cpp and co
  21. if (WITH_DBUS)
  22. find_package(Qt5DBus REQUIRED)
  23. include_directories(${Qt5DBus_INCLUDES})
  24. add_definitions(${Qt5DBus_DEFINITIONS})
  25. endif (WITH_DBUS)
  26. include_directories(${Qt5Widgets_INCLUDES})
  27. add_definitions(${Qt5Widgets_DEFINITIONS})
  28. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
  29. # set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
  30. if(APPLE)
  31. include_directories(${Qt5MacExtras_INCLUDE_DIRS})
  32. add_definitions(${Qt5MacExtras_DEFINITIONS})
  33. set (QT_LIBRARIES ${QT_LIBRARIES} ${Qt5MacExtras_LIBRARIES})
  34. endif()
  35. macro(qt_wrap_ui)
  36. qt5_wrap_ui(${ARGN})
  37. endmacro()
  38. macro(qt_add_resources)
  39. qt5_add_resources(${ARGN})
  40. endmacro()
  41. # find_package(Qt5LinguistTools REQUIRED)
  42. macro(qt_add_translation)
  43. # qt5_add_translation(${ARGN})
  44. endmacro()
  45. macro(qt_add_dbus_interface)
  46. qt5_add_dbus_interface(${ARGN})
  47. endmacro()
  48. macro(qt_add_dbus_adaptor)
  49. qt5_add_dbus_adaptor(${ARGN})
  50. endmacro()
  51. macro(qt_wrap_cpp)
  52. qt5_wrap_cpp(${ARGN})
  53. endmacro()
  54. macro(install_qt_executable)
  55. install_qt5_executable(${ARGN})
  56. endmacro()
  57. macro(setup_qt)
  58. endmacro()
  59. set(QT_RCC_EXECUTABLE "${Qt5Core_RCC_EXECUTABLE}")
  60. #Enable deprecated symbols
  61. add_definitions("-DQT_DISABLE_DEPRECATED_BEFORE=0")
  62. endif()
  63. endif()
  64. if( NOT Qt5Core_DIR )
  65. message(STATUS "Could not find Qt5, searching for Qt4 instead...")
  66. set(NEEDED_QT4_COMPONENTS "QtCore" "QtXml" "QtNetwork" "QtGui" "QtWebkit")
  67. if( BUILD_TESTS )
  68. list(APPEND NEEDED_QT4_COMPONENTS "QtTest")
  69. endif()
  70. macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} )
  71. macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether the \n qtwebkit-devel package and whatever contains QtUiTools is installed too")
  72. macro(qt5_use_modules)
  73. endmacro()
  74. macro(qt_wrap_ui)
  75. qt4_wrap_ui(${ARGN})
  76. endmacro()
  77. macro(qt_add_resources)
  78. qt4_add_resources(${ARGN})
  79. endmacro()
  80. macro(qt_add_translation)
  81. qt4_add_translation(${ARGN})
  82. endmacro()
  83. macro(qt_add_dbus_interface)
  84. qt4_add_dbus_interface(${ARGN})
  85. endmacro()
  86. macro(qt_add_dbus_adaptor)
  87. qt4_add_dbus_adaptor(${ARGN})
  88. endmacro()
  89. macro(qt_wrap_cpp)
  90. qt4_wrap_cpp(${ARGN})
  91. endmacro()
  92. macro(install_qt_executable)
  93. install_qt4_executable(${ARGN})
  94. endmacro()
  95. macro(setup_qt)
  96. set(QT_USE_QTGUI TRUE)
  97. set(QT_USE_QTSQL TRUE)
  98. set(QT_USE_QTNETWORK TRUE)
  99. set(QT_USE_QTXML TRUE)
  100. set(QT_USE_QTWEBKIT TRUE)
  101. set(QT_USE_QTDBUS TRUE)
  102. include( ${QT_USE_FILE} )
  103. endmacro()
  104. endif()
  105. if( Qt5Core_DIR )
  106. set( HAVE_QT5 TRUE )
  107. else( Qt5Core_DIR )
  108. set( HAVE_QT5 FALSE )
  109. endif( Qt5Core_DIR )