From ce53981f65d8f277731f9264e7b704c6a3890ada Mon Sep 17 00:00:00 2001 From: samelian Date: Sun, 17 Oct 2010 21:14:11 +0000 Subject: [PATCH] [kde-common/cmake] added our own FindQt module git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kde-common@1186901 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- cmake/modules/FindQt.cmake | 92 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 cmake/modules/FindQt.cmake diff --git a/cmake/modules/FindQt.cmake b/cmake/modules/FindQt.cmake new file mode 100644 index 0000000..52d6485 --- /dev/null +++ b/cmake/modules/FindQt.cmake @@ -0,0 +1,92 @@ +################################################# +# +# (C) 2010 Serghei Amelian +# serghei (DOT) amelian (AT) gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +macro( __tde_internal_find_qt_program __progname __output ) + find_program( ${__output} + NAMES ${__progname} + HINTS ${QTDIR}/bin $ENV{QTDIR}/bin + PATHS ${BINDIR} ) + if( NOT ${__output} ) + tde_message_fatal( "${__progname} are NOT found.\n Please check if Qt are correctly installed." ) + endif( NOT ${__output} ) +endmacro( __tde_internal_find_qt_program ) + + +if( NOT QT_FOUND ) + + # we search for moc only if is not already set (by user or previous run of cmake) + if( NOT QT_MOC_EXECUTABLE ) + __tde_internal_find_qt_program( moc QT_MOC_EXECUTABLE ) + endif( NOT QT_MOC_EXECUTABLE ) + + message( STATUS "checking for 'Qt'") + + # we run moc, to check which qt version is using + execute_process( + COMMAND ${QT_MOC_EXECUTABLE} -v + ERROR_VARIABLE __output + RESULT_VARIABLE __result + ERROR_STRIP_TRAILING_WHITESPACE ) + + # parse moc response, to extract Qt version + if( __result EQUAL 1 ) + string( REGEX MATCH "^.*Qt (.+)\\)$" __dummy "${__output}" ) + set( __version "${CMAKE_MATCH_1}" ) + if( NOT __version ) + tde_message_fatal( "Invalid response from moc:\n ${__output}" ) + endif( NOT __version ) + else( __result EQUAL 1 ) + tde_message_fatal( "Unable to run moc!\n Qt are correctly installed?\n LD_LIBRARY_PATH are correctly set?" ) + endif( __result EQUAL 1 ) + + # search for uic + __tde_internal_find_qt_program( uic QT_UIC_EXECUTABLE ) + + # try to find path to qt.h + # we assume that this path is Qt's include path + find_path( QT_INCLUDE_DIR qt.h + ${QT_INCLUDE_DIR} + ${QTDIR}/include + $ENV{QTDIR}/include ) + + if( NOT QT_INCLUDE_DIR ) + + tde_message_fatal( + "Unable to find qt.h! + Qt are correctly installed? + Try to set QT_INCLUDE_DIR manually. + Example: cmake -DQT_INCLUDE_DIR=/usr/qt/3/include" ) + + endif( NOT QT_INCLUDE_DIR ) + + # try to find libqt-mt.so + # we assume that this is Qt's libraries path + find_path( QT_LIBRARY_DIR libqt-mt.so + ${QT_LIBRARY_DIR} + ${QTDIR}/lib + $ENV{QTDIR}/lib ) + + if( NOT QT_LIBRARY_DIR ) + + tde_message_fatal( + "Unable to find libqt-mt.so! + Qt are correctly installed? + Try to set QT_LIBRARY_DIR manually. + Example: cmake -DQT_LIBRARY_DIR=/usr/qt/3/lib" ) + + endif( NOT QT_LIBRARY_DIR ) + + message( STATUS " found Qt, version ${__version}" ) + set( QT_FOUND true CACHE INTERNAL QT_FOUND FORCE ) + set( QT_LIBRARIES "qt-mt" CACHE INTERNAL QT_LIBRARIES FORCE ) + set( QT_DEFINITIONS "-DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION" CACHE INTERNAL QT_DEFINITIONS FORCE ) + +endif( NOT QT_FOUND )