[Cmake] Making the cmake FindXXX.cmake files more consistent

Ian Scott ian.m.scott at stud.man.ac.uk
Mon Aug 19 09:48:54 EDT 2002


Here is my suggestion for a FindQt.cmake

I think CMAke will automatically put QT_INCLUDE_DIR, QT_QT_LIBRARY,
QT_MOC_EXECUTABLE, and QT_UIC_EXECUTABLE in the cache, but this is rather
more than Brad suggests is necessary.
I guess we could have a single QT_MOST_STUFF_IN_HERE_DIR variable in the
cache, but I don't know how to work backwards from the above variables, or
check that a single variable is consistent. Having a single variable also
assumes that qt is always distributed in the include, lib and bin directores
ofa specific place - this may not always be true.

Ian.

# FindQt.cmake
# Locate Qt include paths and libraries
# Author Ian Scott.

# This module defines
# QT_INCLUDE_DIR, where to find qt.h, etc.
# QT_QT_LIBRARY, where to find the qt library.
# QT_MOC_EXECUTABLE, where to find the moc tool.
# QT_UIC_EXECUTABLE, where to find the uic tool.
# QT_WRAP_CPP, If false, don't use QT_WRAP_CPP command.
# QT_WRAP_UI, If false, don't use QT_WRAP_UI command.
# QT_FOUND, If false, do try to us Qt.

IF (UNIX)

  FIND_PATH(QT_INCLUDE_PATH qt.h
    ${QTDIR}/include
    /usr/local/qt/include
    /usr/local/include
    /usr/include
  )

  FIND_LIBRARY(QT_QT_LIBRARY qt
    ${QTDIR}/lib
    /usr/local/qt/lib
    /usr/local/lib
    /usr/lib
  )

  FIND_FILE(QT_MOC_EXECUTABLE moc
    ${QTDIR}/bin
    ${path}
  )

  FIND_FILE(QT_UIC_EXECUTABLE uic
    ${QTDIR}/bin
    ${path}
  )

ENDIF (UNIX)

IF (WIN32)
  # Not sure where to look for Qt under windows
  # Assume that QTDIR has been set

  FIND_PATH(QT_INCLUDE_DIR qt.h
    ${QTDIR}/include C:/Progra~1/qt/include)
  )

  FIND_LIBRARY(QT_QT_LIBRARY qt
    ${QTDIR}/lib C:/Progra~1/qt/lib)
  )

  FIND_FILE(QT_MOC_EXECUTABLE moc.exe
    ${QTDIR}/bin C:/Progra~1/qt/bin
    ${path}
  )

  FIND_FILE(QT_UIC_EXECUTABLE uic.exe
    ${QTDIR}/bin C:/Progra~1/qt/bin
    ${path}
  )

ENDIF (WIN32)


IF (QT_MOC_EXECUTABLE)
  SET ( QT_WRAP_CPP "YES")
ENDIF (QT_MOC_EXE)

IF (QT_UIC_EXECUTABLE)
  SET ( QT_WRAP_UI "YES")
ENDIF (QT_UIC_EXECUTABLE)


IF(QT_INCLUDE_DIR)
  IF(QT_QT_LIBRARY)
    IF (WIN32)
      #Ensure that qt.lib is last
      SET(QT_LIBRARIES imm32.lib ws2_32.lib)
    ENDIF (WIN32)
    SET( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )
    SET( QT_FOUND "YES" )
    SET ADD_DEFINITIONS( -DHAS_QT )
  ENDIF(QT_QT_LIBRARY)
ENDIF(QT_INCLUDE_PATH)






More information about the CMake mailing list