diff options
author | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2013-06-05 11:12:37 +0300 |
---|---|---|
committer | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2013-06-05 11:58:43 +0300 |
commit | 5bad049fd2192b6b00abde485f6e8171d68ca933 (patch) | |
tree | d149d8cee00e8f68e252d88fe87afc27b08539c9 | |
parent | 6624f10817da99a63253799f1f99162304cbd894 (diff) |
qt5: Add conditional support for Qt5 in the build system
Based on patches by:
Andoni Morales Alastruey <ylatuya@gmail.com>
Luciana Fujii Pontello <luciana@fujii.eti.br>
-rw-r--r-- | CMakeLists.txt | 18 | ||||
-rw-r--r-- | cmake/modules/QtHelpers.cmake | 79 | ||||
-rw-r--r-- | examples/qmlplayer/CMakeLists.txt | 2 | ||||
-rw-r--r-- | examples/recorder/CMakeLists.txt | 2 | ||||
-rw-r--r-- | examples/voip/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/QGlib/QtGLib-2.0.pc.in | 2 | ||||
-rw-r--r-- | src/QGst/QtGStreamerUi-0.10.pc.in | 4 | ||||
-rw-r--r-- | tests/auto/CMakeLists.txt | 5 | ||||
-rw-r--r-- | tests/manual/CMakeLists.txt | 9 |
9 files changed, 104 insertions, 19 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e89987..1a1d8d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,20 +15,22 @@ option(QTGSTREAMER_EXAMPLES "Build QtGStreamer's examples" ON) option(QTGSTREAMER_CODEGEN "Build and use QtGStreamer's codegen" OFF) option(USE_GST_PLUGIN_DIR "Install gstreamer plugins at the system location" ON) option(USE_QT_PLUGIN_DIR "Install qt plugins at the system location" ON) +set(QT_VERSION "4" CACHE STRING "Qt version used for the build") include(MacroLogFeature) -find_package(Qt4 COMPONENTS QtCore QtGui) -macro_log_feature(QT4_FOUND "Qt 4" "Required for building everything" "http://qt.nokia.com/" TRUE "4.7") +include(QtHelpers) + +macro_log_feature(QT_FOUND "Qt" "Required for building everything" "http://qt.nokia.com/" TRUE "${QT_MIN_VERSION}") macro_log_feature(QT_QTOPENGL_FOUND "QtOpenGL" "Required for OpenGL acceleration in qtvideosink and QtGStreamerUi" - "http://qt.nokia.com/" FALSE "4.7") + "http://qt.nokia.com/" FALSE "${QT_MIN_VERSION}") macro_log_feature(QT_QTDECLARATIVE_FOUND "QtDeclarative" "Required for building QML support" - "http://qt.nokia.com/" FALSE "4.7") + "http://qt.nokia.com/" FALSE "${QT_MIN_VERSION}") if (QTGSTREAMER_TESTS) macro_log_feature(QT_QTTEST_FOUND "QtTest" "Required for building unit tests" - "http://qt.nokia.com/" FALSE "4.7") + "http://qt.nokia.com/" FALSE "${QT_MIN_VERSION}") if (NOT QT_QTTEST_FOUND) set(QTGSTREAMER_TESTS OFF) endif() @@ -115,7 +117,11 @@ endif() if (USE_QT_PLUGIN_DIR) set(IMPORTS_INSTALL_DIR ${QT_IMPORTS_DIR}) else() - set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt4/imports) + if (USE_QT5) + set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt5/imports) + else() + set(IMPORTS_INSTALL_DIR ${LIB_INSTALL_DIR}/qt4/imports) + endif() endif() if (QTGSTREAMER_CODEGEN AND FLEX_FOUND AND BISON_FOUND) diff --git a/cmake/modules/QtHelpers.cmake b/cmake/modules/QtHelpers.cmake new file mode 100644 index 0000000..66ac2b0 --- /dev/null +++ b/cmake/modules/QtHelpers.cmake @@ -0,0 +1,79 @@ +# - Try to find an installed version of Qt based on QT_VERSION +# Once done this will define +# +# USE_QT4 - Building with Qt4 +# USE_QT5 - Building with Qt5 +# QT_MIN_VERSION - qt minimum +# +# Copyright (c) 2013, Fluendo S.L. <support@fluendo.com> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (${QT_VERSION} STREQUAL "5") + set(USE_QT5 TRUE) + set(QT_MIN_VERSION 5.0.1) + message(STATUS "Using Qt5 (min: ${QT_MIN_VERSION})") +elseif (${QT_VERSION} STREQUAL "4") + set(USE_QT4 TRUE) + set(QT_MIN_VERSION 4.7) + message(STATUS "Using Qt4 (min:${QT_MIN_VERSION})") +endif() + +if (USE_QT5) + find_package(Qt5Core) + find_package(Qt5Gui) + find_package(Qt5Widgets) + if (Qt5Core_FOUND AND Qt5Gui_FOUND AND Qt5Widgets_FOUND) + set(QT_FOUND true) + set(QT_QTCORE_FOUND true) + set(QT_QTGUI_FOUND true) + set(QT_QTCORE_LIBRARY ${Qt5Core_LIBRARIES}) + set(QT_QTGUI_LIBRARY ${Qt5Widgets_LIBRARIES}) + set(QT_INCLUDE_DIR ${Qt5Widgets_INCLUDE_DIRS}) + endif() + find_package(Qt5Declarative) + if (Qt5Declarative_FOUND) + set(QT_QTDECLARATIVE_FOUND true) + set(QT_QTDECLARATIVE_LIBRARY ${Qt5Declarative_LIBRARIES}) + set(QT_QTDECLARATIVE_INCLUDE_DIR ${Qt5Declarative_INCLUDE_DIRS}) + endif() + find_package(Qt5Test) + if (Qt5Test_FOUND) + set(QT_QTTEST_FOUND true) + set(QT_QTTEST_LIBRARY ${Qt5Test_LIBRARIES}) + set(QT_QTTEST_INCLUDE_DIR ${Qt5Test_INCLUDE_DIRS}) + endif () + find_package(Qt5OpenGL) + if (Qt5OpenGL_FOUND) + set(QT_QTOPENGL_FOUND true) + set(QT_QTOPENGL_LIBRARY ${Qt5OpenGL_LIBRARIES}) + set(QT_QTOPENGL_INCLUDE_DIR ${Qt5OpenGL_INCLUDE_DIRS}) + endif() + set(PKG_CONFIG_QTCORE_DEP Qt5Core) + set(PKG_CONFIG_QTGUI_DEP Qt5Widgets) +elseif (USE_QT4) + find_package(Qt4 COMPONENTS QtCore QtGui) + set(PKG_CONFIG_QTCORE_DEP QtCore) + set(PKG_CONFIG_QTGUI_DEP QtGui) +else() + message(FATAL_ERROR "Qt supported versions are: 4 and 5") +endif() + +# qt_helper_wrap_ui(outfiles inputfile ... ) +macro(QT_HELPER_WRAP_UI) + if (USE_QT5) + qt5_wrap_ui(${ARGV}) + elseif (USE_QT4) + qt4_wrap_ui(${ARGV}) + endif() +endmacro() + +# qt_helper_add_resources(outfiles inputfile ... ) +macro(QT_HELPER_ADD_RESOURCES) + if (USE_QT5) + qt5_add_resources(${ARGV}) + elseif (USE_QT4) + qt4_add_resources(${ARGV}) + endif() +endmacro() diff --git a/examples/qmlplayer/CMakeLists.txt b/examples/qmlplayer/CMakeLists.txt index cabb111..1add76b 100644 --- a/examples/qmlplayer/CMakeLists.txt +++ b/examples/qmlplayer/CMakeLists.txt @@ -35,7 +35,7 @@ else() endif() set(qmlplayer_SOURCES main.cpp player.cpp) -qt4_add_resources(qmlplayer_rcc_SOURCES qmlplayer.qrc) +qt_helper_add_resources(qmlplayer_rcc_SOURCES qmlplayer.qrc) add_executable(qmlplayer ${qmlplayer_SOURCES} diff --git a/examples/recorder/CMakeLists.txt b/examples/recorder/CMakeLists.txt index fa30e9e..25a2ac4 100644 --- a/examples/recorder/CMakeLists.txt +++ b/examples/recorder/CMakeLists.txt @@ -10,6 +10,6 @@ include_directories(${QTGSTREAMER_INCLUDES}) add_definitions(${QTGSTREAMER_DEFINITIONS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}") -qt4_wrap_ui(recorder_UI_SRCS recorder.ui) +qt_helper_wrap_ui(recorder_UI_SRCS recorder.ui) add_executable(recorder main.cpp ${recorder_UI_SRCS}) target_link_libraries(recorder ${QTGSTREAMER_LIBRARIES} ${QT_QTGUI_LIBRARY}) diff --git a/examples/voip/CMakeLists.txt b/examples/voip/CMakeLists.txt index d16dfae..5735dbd 100644 --- a/examples/voip/CMakeLists.txt +++ b/examples/voip/CMakeLists.txt @@ -10,6 +10,6 @@ include_directories(${QTGSTREAMER_INCLUDES}) add_definitions(${QTGSTREAMER_DEFINITIONS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}") -qt4_wrap_ui(voip_UI_SRCS voip.ui) +qt_helper_wrap_ui(voip_UI_SRCS voip.ui) add_executable(voip main.cpp ${voip_UI_SRCS}) target_link_libraries(voip ${QTGSTREAMER_UI_LIBRARIES}) diff --git a/src/QGlib/QtGLib-2.0.pc.in b/src/QGlib/QtGLib-2.0.pc.in index cedb05e..5e0c295 100644 --- a/src/QGlib/QtGLib-2.0.pc.in +++ b/src/QGlib/QtGLib-2.0.pc.in @@ -5,7 +5,7 @@ includedir=@INCLUDES_INSTALL_DIR@ Name: QtGLib-2.0 Description: Qt-style C++ bindings library for GLib & GObject -Requires: QtCore +Requires: @PKG_CONFIG_QTCORE_DEP@ Requires.private: gobject-2.0 Version: @QTGSTREAMER_VERSION@ Cflags: -I${includedir} diff --git a/src/QGst/QtGStreamerUi-0.10.pc.in b/src/QGst/QtGStreamerUi-0.10.pc.in index 04d3fd5..5b483c3 100644 --- a/src/QGst/QtGStreamerUi-0.10.pc.in +++ b/src/QGst/QtGStreamerUi-0.10.pc.in @@ -4,8 +4,8 @@ libdir=@LIB_INSTALL_DIR@ includedir=@INCLUDES_INSTALL_DIR@ Name: QtGStreamerUi-0.10 -Description: QtGui GStreamer integration library -Requires: QtGui QtGStreamer-0.10 +Description: QtGui/QtWidgets GStreamer integration library +Requires: @PKG_CONFIG_QTGUI_DEP@ QtGStreamer-0.10 Version: @QTGSTREAMER_VERSION@ Cflags: -I${includedir} Libs: -L${libdir} -lQtGStreamerUi-0.10 diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt index a9fcca0..2ab36ad 100644 --- a/tests/auto/CMakeLists.txt +++ b/tests/auto/CMakeLists.txt @@ -1,5 +1,5 @@ include_directories(${GSTREAMER_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} - ${QTGSTREAMER_INCLUDES}) + ${QTGSTREAMER_INCLUDES} ${QT_QTTEST_INCLUDE_DIR}) add_definitions(${QTGSTREAMER_DEFINITIONS} -DGST_DISABLE_XML -DGST_DISABLE_LOADSAVE) add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}") @@ -7,7 +7,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}") macro(qgst_test target) add_executable(${target} "${target}.cpp") target_link_libraries(${target} ${QT_QTTEST_LIBRARY} ${GSTREAMER_LIBRARY} - ${GOBJECT_LIBRARIES} ${QTGSTREAMER_LIBRARIES}) + ${GOBJECT_LIBRARIES} ${QTGSTREAMER_LIBRARIES} + ${GSTREAMER_PBUTILS_LIBRARY}) add_test(NAME ${target} COMMAND ${target}) endmacro(qgst_test) diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt index 64d5e86..fc78d46 100644 --- a/tests/manual/CMakeLists.txt +++ b/tests/manual/CMakeLists.txt @@ -2,19 +2,18 @@ include_directories(${QTGSTREAMER_INCLUDES}) add_definitions(${QTGSTREAMER_DEFINITIONS}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${QTGSTREAMER_FLAGS}") -qt4_wrap_ui(QWIDGETVIDEOSINKTEST_UI qwidgetvideosinktest.ui) +qt_helper_wrap_ui(QWIDGETVIDEOSINKTEST_UI qwidgetvideosinktest.ui) add_executable(qwidgetvideosinktest qwidgetvideosinktest.cpp ${QWIDGETVIDEOSINKTEST_UI}) target_link_libraries(qwidgetvideosinktest ${QT_QTGUI_LIBRARIES} ${QTGSTREAMER_LIBRARIES}) - -qt4_wrap_ui(VIDEOWIDGETTEST_UI videowidgettest.ui) +qt_helper_wrap_ui(VIDEOWIDGETTEST_UI videowidgettest.ui) add_executable(videowidgettest videowidgettest.cpp ${VIDEOWIDGETTEST_UI}) target_link_libraries(videowidgettest ${QTGSTREAMER_UI_LIBRARIES}) -qt4_wrap_ui(VIDEOWIDGETPIPELINETEST_UI videowidgetpipelinetest.ui) +qt_helper_wrap_ui(VIDEOWIDGETPIPELINETEST_UI videowidgetpipelinetest.ui) add_executable(videowidgetpipelinetest videowidgetpipelinetest.cpp ${VIDEOWIDGETPIPELINETEST_UI}) target_link_libraries(videowidgetpipelinetest ${QTGSTREAMER_UI_LIBRARIES}) -qt4_wrap_ui(VIDEOORIENTATIONTEST_UI videoorientationtest.ui) +qt_helper_wrap_ui(VIDEOORIENTATIONTEST_UI videoorientationtest.ui) add_executable(videoorientationtest videoorientationtest.cpp ${VIDEOORIENTATIONTEST_UI}) target_link_libraries(videoorientationtest ${QTGSTREAMER_UI_LIBRARIES}) |