diff options
author | Alexander Neundorf <neundorf@kde.org> | 2009-11-08 18:06:55 +0000 |
---|---|---|
committer | Alexander Neundorf <neundorf@kde.org> | 2009-11-08 18:06:55 +0000 |
commit | 0b44a7baaa68cf9a620f942874e9e594f7ad4048 (patch) | |
tree | 81e97612d5311f1d6e8af0a6fc0626b2c78b9394 | |
parent | 04700c7c77e786bc71a9b9d2f957221e89579d9c (diff) | |
download | extra-cmake-modules-0b44a7baaa68cf9a620f942874e9e594f7ad4048.tar.gz extra-cmake-modules-0b44a7baaa68cf9a620f942874e9e594f7ad4048.tar.bz2 |
some more syncing with FindQt4.cmake from cmake:
-use the same cmake code for finding the include dirs for the different Qt modules
-move the mark_as_advanced() around a bit
-fix the the -F flag for moc on OSX
Alex
svn path=/trunk/KDE/kdelibs/; revision=1046417
-rw-r--r-- | modules/FindQt4.cmake | 322 |
1 files changed, 94 insertions, 228 deletions
diff --git a/modules/FindQt4.cmake b/modules/FindQt4.cmake index 3550d2a9..1ce79201 100644 --- a/modules/FindQt4.cmake +++ b/modules/FindQt4.cmake @@ -617,18 +617,93 @@ IF (QT4_QMAKE_FOUND) SET(QT_TRANSLATIONS_DIR ${qt_translations_dir} CACHE PATH "The location of the Qt translations" FORCE) ENDIF (QT_LIBRARY_DIR AND NOT QT_TRANSLATIONS_DIR OR QT_QMAKE_CHANGED) + # Make variables changeble to the advanced user + MARK_AS_ADVANCED( QT_LIBRARY_DIR QT_DOC_DIR QT_MKSPECS_DIR + QT_PLUGINS_DIR QT_TRANSLATIONS_DIR) + + ######################################## # # Setting the INCLUDE-Variables # ######################################## - FIND_PATH(QT_QTCORE_INCLUDE_DIR QtGlobal - ${QT_HEADERS_DIR}/QtCore - ${QT_LIBRARY_DIR}/QtCore.framework/Headers + SET(QT_MODULES QtCore QtGui Qt3Support QtSvg QtScript QtTest QtUiTools + QtHelp QtWebKit QtXmlPatterns QtNetwork + QtNsPlugin QtOpenGL QtSql QtXml QtDesigner QtDBus QtScriptTools) + + FOREACH(QT_MODULE ${QT_MODULES}) + STRING(TOUPPER ${QT_MODULE} _upper_qt_module) + FIND_PATH(QT_${_upper_qt_module}_INCLUDE_DIR ${QT_MODULE} + PATHS + ${QT_HEADERS_DIR}/${QT_MODULE} + ${QT_LIBRARY_DIR}/${QT_MODULE}.framework/Headers + NO_DEFAULT_PATH + ) + ENDFOREACH(QT_MODULE) + + IF(WIN32) + # Set QT_QTAXSERVER_INCLUDE_DIR + FIND_PATH(QT_QTAXSERVER_INCLUDE_DIR QtAxServer + PATHS + ${QT_INCLUDE_DIR}/QtAxServer + ${QT_HEADERS_DIR}/QtAxServer + NO_DEFAULT_PATH + ) + + # Set QT_QTAXCONTAINER_INCLUDE_DIR + FIND_PATH(QT_QTAXCONTAINER_INCLUDE_DIR QtAxContainer + PATHS + ${QT_INCLUDE_DIR}/QtAxContainer + ${QT_HEADERS_DIR}/QtAxContainer + NO_DEFAULT_PATH + ) + ENDIF(WIN32) + + # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR + FIND_PATH(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents + PATHS + ${QT_HEADERS_DIR}/QtDesigner + ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers + NO_DEFAULT_PATH + ) + + # Set QT_QTASSISTANT_INCLUDE_DIR + FIND_PATH(QT_QTASSISTANT_INCLUDE_DIR QtAssistant + PATHS + ${QT_HEADERS_DIR}/QtAssistant + ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers NO_DEFAULT_PATH ) + # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR + FIND_PATH(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient + PATHS + ${QT_HEADERS_DIR}/QtAssistant + ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers + NO_DEFAULT_PATH + ) + + # Set QT_QT_INCLUDE_DIR + FIND_PATH(QT_QT_INCLUDE_DIR qglobal.h + PATHS + ${QT_INCLUDE_DIR}/Qt + ${QT_LIBRARY_DIR}/QtCore.framework/Headers + NO_DEFAULT_PATH + ) + + # Set QT_PHONON_INCLUDE_DIR + # Qt >= 4.5.3 (or kde-qt-4.5.2 which has the fix too) : Phonon/ClassName is inside include/phonon + # With previous versions of Qt, this could not work; upgrade Qt or use a standalone phonon + FIND_PATH(QT_PHONON_INCLUDE_DIR Phonon + PATHS + ${QT_HEADERS_DIR}/phonon + NO_DEFAULT_PATH + ) + + # Make variables changeble to the advanced user + MARK_AS_ADVANCED( QT_INCLUDE_DIR QT_QT_INCLUDE_DIR) + # Set QT_INCLUDE_DIR by removine "/QtCore" in the string ${QT_QTCORE_INCLUDE_DIR} IF( QT_QTCORE_INCLUDE_DIR AND NOT QT_INCLUDE_DIR) IF (QT_USE_FRAMEWORKS) @@ -641,16 +716,12 @@ IF (QT4_QMAKE_FOUND) IF( NOT QT_INCLUDE_DIR) IF(Qt4_FIND_REQUIRED) - MESSAGE( FATAL_ERROR "Could NOT find QtGlobal header") + MESSAGE( FATAL_ERROR "Could NOT find QtCore header") ENDIF(Qt4_FIND_REQUIRED) ENDIF( NOT QT_INCLUDE_DIR) - # Make variables changeble to the advanced user - MARK_AS_ADVANCED( QT_LIBRARY_DIR QT_INCLUDE_DIR QT_DOC_DIR QT_MKSPECS_DIR - QT_PLUGINS_DIR QT_TRANSLATIONS_DIR) - # Set QT_INCLUDES - SET( QT_INCLUDES ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} ) + SET( QT_INCLUDES ${QT_QT_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} ) ############################################# @@ -690,6 +761,14 @@ IF (QT4_QMAKE_FOUND) # ############################################# + # This check is after the check for the window system, since it uses Q_WS_X11: + # Set QT_QTMOTIF_INCLUDE_DIR + IF(Q_WS_X11) + FIND_PATH(QT_QTMOTIF_INCLUDE_DIR QtMotif + PATHS + ${QT_INCLUDE_DIR}/QtMotif + NO_DEFAULT_PATH ) + ENDIF(Q_WS_X11) ####################################### @@ -714,218 +793,6 @@ IF (QT4_QMAKE_FOUND) SET(QT_DEFINITIONS ${QT_DEFINITIONS} -F${QT_LIBRARY_DIR} -L${QT_LIBRARY_DIR} ) ENDIF (QT_USE_FRAMEWORKS) - # Set QT_QT3SUPPORT_INCLUDE_DIR - FIND_PATH(QT_QT3SUPPORT_INCLUDE_DIR Qt3Support - PATHS - ${QT_INCLUDE_DIR}/Qt3Support - ${QT_LIBRARY_DIR}/Qt3Support.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QT_INCLUDE_DIR - FIND_PATH(QT_QT_INCLUDE_DIR qglobal.h - PATHS - ${QT_INCLUDE_DIR}/Qt - ${QT_LIBRARY_DIR}/QtCore.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTGUI_INCLUDE_DIR - FIND_PATH(QT_QTGUI_INCLUDE_DIR QtGui - PATHS - ${QT_INCLUDE_DIR}/QtGui - ${QT_LIBRARY_DIR}/QtGui.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTSVG_INCLUDE_DIR - FIND_PATH(QT_QTSVG_INCLUDE_DIR QtSvg - PATHS - ${QT_INCLUDE_DIR}/QtSvg - ${QT_LIBRARY_DIR}/QtSvg.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTSCRIPT_INCLUDE_DIR - FIND_PATH(QT_QTSCRIPT_INCLUDE_DIR QtScript - PATHS - ${QT_INCLUDE_DIR}/QtScript - ${QT_LIBRARY_DIR}/QtScript.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTSCRIPTTOOLS_INCLUDE_DIR - FIND_PATH(QT_QTSCRIPTTOOLS_INCLUDE_DIR QtScriptTools - PATHS - ${QT_INCLUDE_DIR}/QtScriptTools - ${QT_LIBRARY_DIR}/QtScriptTools.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTTEST_INCLUDE_DIR - FIND_PATH(QT_QTTEST_INCLUDE_DIR QtTest - PATHS - ${QT_INCLUDE_DIR}/QtTest - ${QT_LIBRARY_DIR}/QtTest.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTUITOOLS_INCLUDE_DIR - FIND_PATH(QT_QTUITOOLS_INCLUDE_DIR QtUiTools - PATHS - ${QT_INCLUDE_DIR}/QtUiTools - ${QT_LIBRARY_DIR}/QtUiTools.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTMOTIF_INCLUDE_DIR - IF(Q_WS_X11) - FIND_PATH(QT_QTMOTIF_INCLUDE_DIR QtMotif - PATHS - ${QT_INCLUDE_DIR}/QtMotif - NO_DEFAULT_PATH ) - ENDIF(Q_WS_X11) - - # Set QT_QTNETWORK_INCLUDE_DIR - FIND_PATH(QT_QTNETWORK_INCLUDE_DIR QtNetwork - PATHS - ${QT_INCLUDE_DIR}/QtNetwork - ${QT_LIBRARY_DIR}/QtNetwork.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTNSPLUGIN_INCLUDE_DIR - FIND_PATH(QT_QTNSPLUGIN_INCLUDE_DIR QtNsPlugin - PATHS - ${QT_INCLUDE_DIR}/QtNsPlugin - ${QT_LIBRARY_DIR}/QtNsPlugin.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTOPENGL_INCLUDE_DIR - FIND_PATH(QT_QTOPENGL_INCLUDE_DIR QtOpenGL - PATHS - ${QT_INCLUDE_DIR}/QtOpenGL - ${QT_LIBRARY_DIR}/QtOpenGL.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTSQL_INCLUDE_DIR - FIND_PATH(QT_QTSQL_INCLUDE_DIR QtSql - PATHS - ${QT_INCLUDE_DIR}/QtSql - ${QT_LIBRARY_DIR}/QtSql.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTXML_INCLUDE_DIR - FIND_PATH(QT_QTXML_INCLUDE_DIR QtXml - PATHS - ${QT_INCLUDE_DIR}/QtXml - ${QT_LIBRARY_DIR}/QtXml.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTASSISTANT_INCLUDE_DIR - FIND_PATH(QT_QTASSISTANT_INCLUDE_DIR QtAssistant - PATHS - ${QT_INCLUDE_DIR}/QtAssistant - ${QT_HEADERS_DIR}/QtAssistant - ${QT_LIBRARY_DIR}/QtAssistant.framework/Headers - NO_DEFAULT_PATH - ) - - IF(WIN32) - # Set QT_QTAXSERVER_INCLUDE_DIR - FIND_PATH(QT_QTAXSERVER_INCLUDE_DIR QtAxServer - PATHS - ${QT_INCLUDE_DIR}/QtAxServer - ${QT_HEADERS_DIR}/QtAxServer - NO_DEFAULT_PATH - ) - - # Set QT_QTAXCONTAINER_INCLUDE_DIR - FIND_PATH(QT_QTAXCONTAINER_INCLUDE_DIR QtAxContainer - PATHS - ${QT_INCLUDE_DIR}/QtAxContainer - ${QT_HEADERS_DIR}/QtAxContainer - NO_DEFAULT_PATH - ) - ENDIF(WIN32) - # Set QT_QTDESIGNER_INCLUDE_DIR - FIND_PATH(QT_QTDESIGNER_INCLUDE_DIR QDesignerComponents - PATHS - ${QT_INCLUDE_DIR}/QtDesigner - ${QT_HEADERS_DIR}/QtDesigner - ${QT_LIBRARY_DIR}/QtDesigner.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR - FIND_PATH(QT_QTDESIGNERCOMPONENTS_INCLUDE_DIR QDesignerComponents - PATHS - ${QT_INCLUDE_DIR}/QtDesigner - ${QT_HEADERS_DIR}/QtDesigner - NO_DEFAULT_PATH - ) - - # Set QT_QTDBUS_INCLUDE_DIR - FIND_PATH(QT_QTDBUS_INCLUDE_DIR QtDBus - PATHS - ${QT_INCLUDE_DIR}/QtDBus - ${QT_HEADERS_DIR}/QtDBus - ${QT_LIBRARY_DIR}/QtDBus.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTASSISTANTCLIENT_INCLUDE_DIR - FIND_PATH(QT_QTASSISTANTCLIENT_INCLUDE_DIR QAssistantClient - PATHS - ${QT_INCLUDE_DIR}/QtAssistant - ${QT_HEADERS_DIR}/QtAssistant - NO_DEFAULT_PATH - ) - - # Set QT_QTHELP_INCLUDE_DIR - FIND_PATH(QT_QTHELP_INCLUDE_DIR QtHelp - PATHS - ${QT_INCLUDE_DIR}/QtHelp - ${QT_HEADERS_DIR}/QtHelp - NO_DEFAULT_PATH - ) - - # Set QT_QTWEBKIT_INCLUDE_DIR - FIND_PATH(QT_QTWEBKIT_INCLUDE_DIR QtWebKit - PATHS - ${QT_INCLUDE_DIR}/QtWebKit - ${QT_HEADERS_DIR}/QtWebKit - ${QT_LIBRARY_DIR}/QtWebKit.framework/Headers - NO_DEFAULT_PATH - ) - - # Set QT_QTXMLPATTERNS_INCLUDE_DIR - FIND_PATH(QT_QTXMLPATTERNS_INCLUDE_DIR QtXmlPatterns - PATHS - ${QT_INCLUDE_DIR}/QtXmlPatterns - ${QT_HEADERS_DIR}/QtXmlPatterns - NO_DEFAULT_PATH - ) - - # Set QT_PHONON_INCLUDE_DIR - # Qt >= 4.5.3 (or kde-qt-4.5.2 which has the fix too) : Phonon/ClassName is inside include/phonon - # With previous versions of Qt, this could not work; upgrade Qt or use a standalone phonon - FIND_PATH(QT_PHONON_INCLUDE_DIR Phonon - PATHS - ${QT_HEADERS_DIR}/phonon - NO_DEFAULT_PATH - ) - - # Make variables changeble to the advanced user - MARK_AS_ADVANCED( QT_QT_INCLUDE_DIR) - - # Set QT_INCLUDES - SET( QT_INCLUDES ${QT_QT_INCLUDE_DIR} ${QT_MKSPECS_DIR}/default ${QT_INCLUDE_DIR} ) - ######################################## # # Setting the LIBRARY-Variables @@ -1402,7 +1269,12 @@ IF (QT4_QMAKE_FOUND) GET_DIRECTORY_PROPERTY(_inc_DIRS INCLUDE_DIRECTORIES) FOREACH(_current ${_inc_DIRS}) - SET(${_moc_flags} ${${_moc_flags}} "-I${_current}") + IF("${_current}" MATCHES ".framework/?$") + STRING(REGEX REPLACE "/[^/]+.framework" "" framework_path "${_current}") + SET(${_moc_flags} ${${_moc_flags}} "-F${framework_path}") + ELSE("${_current}" MATCHES ".framework/?$") + SET(${_moc_flags} ${${_moc_flags}} "-I${_current}") + ENDIF("${_current}" MATCHES ".framework/?$") ENDFOREACH(_current ${_inc_DIRS}) GET_DIRECTORY_PROPERTY(_defines COMPILE_DEFINITIONS) @@ -1414,12 +1286,6 @@ IF (QT4_QMAKE_FOUND) SET(${_moc_flags} ${${_moc_flags}} -DWIN32) ENDIF(Q_WS_WIN) - # if Qt is installed only as framework, add -F /library/Frameworks to the moc arguments - # otherwise moc can't find the headers in the framework include dirs - IF(APPLE AND "${QT_QTCORE_INCLUDE_DIR}" MATCHES "/Library/Frameworks/") - SET(${_moc_INC_DIRS} ${${_moc_INC_DIRS}} "-F/Library/Frameworks") - ENDIF(APPLE AND "${QT_QTCORE_INCLUDE_DIR}" MATCHES "/Library/Frameworks/") - ENDMACRO(QT4_GET_MOC_FLAGS) # helper macro to set up a moc rule |