1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
# - Find Qt5
# This module can be used to find Qt5.
# The most important issues are that Qt5 pkgconfig files are installed with PKG_CONFIG_PATH properly
# set, and that Qt5 qmake is available via the system path.
# This module defines a number of key variables and macros.
#
# Below is a detailed list of variables that FindQt5.cmake sets.
# QT_FOUND If false, don't try to use Qt.
# QT5_FOUND If false, don't try to use Qt5.
#
# QT_VERSION_MAJOR The major version of Qt found.
# QT_VERSION_MINOR The minor version of Qt found.
# QT_VERSION_PATCH The patch version of Qt found.
#
# QT_BINARY_DIR Path to "bin" of Qt4
# QT_DOC_DIR Path to "doc" of Qt4
#
# QT_QTCORE_FOUND True if QtCore was found.
# QT_QTGUI_FOUND True if QtGui was found.
# QT_QTDBUS_FOUND True if QtDBus was found.
# QT_QTNETWORK_FOUND True if QtNetwork was found.
# QT_QTTEST_FOUND True if QtTest was found.
# QT_QTWIDGETS_FOUND True if QtWidgets was found.
# QT_QTXML_FOUND True if QtXml was found.
#
# QT_INCLUDES List of paths to all include directories of Qt5.
# QT_INCLUDE_DIR Path to "include" of Qt4
# QT_QTCORE_INCLUDE_DIR Path to "include/QtCore"
# QT_QTDBUS_INCLUDE_DIR Path to "include/QtDBus"
# QT_QTGUI_INCLUDE_DIR Path to "include/QtGui"
# QT_QTNETWORK_INCLUDE_DIR Path to "include/QtNetwork"
# QT_QTTEST_INCLUDE_DIR Path to "include/QtTest"
# QT_QTWIDGETS_INCLUDE_DIR Path to "include/QtWidgets"
# QT_QTXML_INCLUDE_DIR Path to "include/QtXml"
#
# QT_LIBRARIES List of paths to all libraries of Qt5.
# QT_LIBRARY_DIR Path to "lib" of Qt4
# QT_QTCORE_LIBRARY The QtCore library
# QT_QTDBUS_LIBRARY The QtDBus library
# QT_QTGUI_LIBRARY The QtGui library
# QT_QTNETWORK_LIBRARY The QtNetwork library
# QT_QTTEST_LIBRARY The QtTest library
# QT_QTWIDGETS_LIBRARY The QtWidgets library
# QT_QTXML_LIBRARY The QtXml library
#
# also defined, but NOT for general use are
# QT_MOC_EXECUTABLE Where to find the moc tool.
# Copyright (C) 2001-2009 Kitware, Inc.
# Copyright (C) 2011 Collabora Ltd. <http://www.collabora.co.uk/>
# Copyright (C) 2011 Nokia Corporation
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
IF(QT_INCLUDES AND QT_LIBRARIES AND QT_MAJOR_VERSION MATCHES 5)
# Already in cache, be silent
SET(QT_FOUND TRUE)
SET(QT5_FOUND TRUE)
RETURN()
ENDIF(QT_INCLUDES AND QT_LIBRARIES AND QT_MAJOR_VERSION MATCHES 5)
IF(NOT QT_QMAKE_EXECUTABLE)
FIND_PROGRAM(QT_QMAKE_EXECUTABLE_FINDQT NAMES qmake qmake5 qmake-qt5
PATHS "${QT_SEARCH_PATH}/bin" "$ENV{QTDIR}/bin")
SET(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt qmake program.")
ENDIF(NOT QT_QMAKE_EXECUTABLE)
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_VERSION" OUTPUT_VARIABLE QTVERSION)
IF(NOT QTVERSION MATCHES "5.*")
SET(QT_FOUND FALSE)
SET(QT5_FOUND FALSE)
IF(Qt5_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "CMake was unable to find Qt5, put qmake in your path or set QTDIR/QT_QMAKE_EXECUTABLE.")
ENDIF(Qt5_FIND_REQUIRED)
RETURN()
ENDIF(NOT QTVERSION MATCHES "5.*")
FIND_PACKAGE(PkgConfig REQUIRED)
IF(NOT Qt5_FIND_COMPONENTS)
SET(_COMPONENTS QtCore QtDBus QtGui QtNetwork QtTest QtWidgets QtXml)
ELSE(NOT Qt5_FIND_COMPONENTS)
SET(_COMPONENTS ${Qt5_FIND_COMPONENTS})
ENDIF(NOT Qt5_FIND_COMPONENTS)
FOREACH(_COMPONENT ${_COMPONENTS})
STRING(TOUPPER ${_COMPONENT} _COMPONENT_UPPER)
IF(NOT QT_${_COMPONENT_UPPER}_FOUND)
IF(Qt5_FIND_REQUIRED)
PKG_CHECK_MODULES(PC_${_COMPONENT} REQUIRED ${_COMPONENT}>=${QT_MIN_VERSION})
ELSE(Qt5_FIND_REQUIRED)
PKG_CHECK_MODULES(PC_${_COMPONENT} QUIET ${_COMPONENT}>=${QT_MIN_VERSION})
ENDIF(Qt5_FIND_REQUIRED)
SET(QT_${_COMPONENT_UPPER}_INCLUDE_DIR ${PC_${_COMPONENT}_INCLUDE_DIRS})
FIND_LIBRARY(QT_${_COMPONENT_UPPER}_LIBRARY
NAMES ${_COMPONENT}
HINTS
${PC_${_COMPONENT}_LIBDIR})
SET(QT_${_COMPONENT_UPPER}_FOUND ${PC_${_COMPONENT}_FOUND})
#MESSAGE(STATUS "COMPONENT ${_COMPONENT_UPPER}:")
#MESSAGE(STATUS " QT_${_COMPONENT_UPPER}_LIBRARY: ${QT_${_COMPONENT_UPPER}_LIBRARY}")
#MESSAGE(STATUS " QT_${_COMPONENT_UPPER}_INCLUDE_DIR: ${QT_${_COMPONENT_UPPER}_INCLUDE_DIR}")
#MESSAGE(STATUS " QT_${_COMPONENT_UPPER}_FOUND: ${QT_${_COMPONENT_UPPER}_FOUND}")
SET(QT_INCLUDES ${QT_INCLUDES} ${QT_${_COMPONENT_UPPER}_INCLUDE_DIR})
SET(QT_LIBRARIES ${QT_LIBRARIES} ${QT_${_COMPONENT_UPPER}_INCLUDE_DIR})
MARK_AS_ADVANCED(QT_${_COMPONENT_UPPER}_LIBRARY QT_${_COMPONENT_UPPER}_INCLUDE_DIR)
ENDIF(NOT QT_${_COMPONENT_UPPER}_FOUND)
ENDFOREACH(_COMPONENT)
#MESSAGE(STATUS "QT_LIBRARIES: ${QT_LIBRARIES}")
#MESSAGE(STATUS "QT_INCLUDES: ${QT_INCLUDES}")
STRING(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" QT_VERSION_MAJOR "${QTVERSION}")
STRING(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1" QT_VERSION_MINOR "${QTVERSION}")
STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" QT_VERSION_PATCH "${QTVERSION}")
IF(NOT QT_INCLUDE_DIR)
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_HEADERS" OUTPUT_VARIABLE QTHEADERS)
SET(QT_INCLUDE_DIR ${QTHEADERS} CACHE INTERNAL "" FORCE)
ENDIF(NOT QT_INCLUDE_DIR)
IF(NOT QT_LIBRARY_DIR)
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_LIBS" OUTPUT_VARIABLE QTLIBS)
SET(QT_LIBRARY_DIR ${QTLIBS} CACHE INTERNAL "" FORCE)
ENDIF(NOT QT_LIBRARY_DIR)
IF(NOT QT_BINARY_DIR)
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_BINS" OUTPUT_VARIABLE QTBINS)
SET(QT_BINARY_DIR ${QTBINS} CACHE INTERNAL "" FORCE)
ENDIF(NOT QT_BINARY_DIR)
IF(NOT QT_DOC_DIR)
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_DOCS" OUTPUT_VARIABLE QTDOCS)
SET(QT_DOC_DIR ${QTDOCS} CACHE INTERNAL "" FORCE)
ENDIF(NOT QT_DOC_DIR)
IF(NOT QT_MOC_EXECUTABLE)
FIND_PROGRAM(QT_MOC_EXECUTABLE NAMES moc moc5 moc-qt5 PATHS ${QT_BINARY_DIR}
NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
ENDIF(NOT QT_MOC_EXECUTABLE)
MARK_AS_ADVANCED(QT_INCLUDES QT_INCLUDE_DIR
QT_LIBRARIES QT_LIBRARY_DIR
QT_BINARY_DIR
QT_DOC_DIR
QT_QMAKE_EXECUTABLE_FINDQT QT_QMAKE_EXECUTABLE QT_MOC_EXECUTABLE)
INCLUDE(Qt5Macros)
SET(QT_FOUND TRUE)
SET(QT5_FOUND TRUE)
|