<html><head><style type="text/css">body{font:12px Arial;margin:3px;overflow-y:auto;overflow-x:auto}p{margin:0px;}blockquote, ol, ul{margin-top:0px;margin-bottom:0px;}</style></head>

<body><div style="DISPLAY: block; FONT-SIZE: 12px; FONT-FAMILY: Arial"><FONT size=2>
<P>Hello people,</P>
<P>I'm a Cmake-beginner under Linux platform and I'm experimenting some</P>
<P>troubles in configuring the CMakeLists.txt</P>
<P>and CMakeCache.txt in order to be able to use</P>
<P>Qt ( Qt 3 Open Source Edition) with vtk (4.2 edition).</P>
<P>As reported previously by others in this </P>
<P>mailinglist CMake (version 2.2-beta) complains that QT_DIR is not found, and suggests I set that variable to "The directory </P>
<P>containing QTConfig.cmake" in CMakeCache.txt.</P>
<P>While VTKConfig.cmake and UseVTK.cmake both come with my vtk package, I cannot</P>
<P>find similar files in my Qt dir.Is it absolutely</P>
<P>necessary to implement a QtConfig.cmake and its UseQt.cmake and if so how ?</P>
<P>(I mean if I can do it in a similar way based on those files working with VTK)</P>
<P>==&gt; Here is what happens:</P>
<P>luca@linux:~&gt; cd /home/luca/devel/guitest</P>
<P>luca@linux:~/devel/guitest&gt; cmake /home/luca/devel/guitest</P>
<P>-- Loading VTK CMake commands</P>
<P>-- Loading VTK CMake commands - done</P>
<P>CMake Error: QT_DIR is not set. It must be set to the directory containing QTConfig.cmake in order to use QT.</P>
<P>Cannot build without QT. Please set QT_DIR.</P>
<P>-- Configuring done</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>==&gt; and what it writes in CMakeCache.txt</P>
<P>//The directory containing QTConfig.cmake.</P>
<P>QT_DIR:PATH=QT_DIR-NOTFOUND</P>
<P>==&gt; and now my CMakeLists.txt</P>
<P>&nbsp;</P>
<P>PROJECT(guitest)</P>
<P>#if you don't want the full compiler output, remove the following line</P>
<P>SET(CMAKE_VERBOSE_MAKEFILE ON)</P>
<P>#*********************************************************#</P>
<P># Find VTK.</P>
<P>FIND_PACKAGE(VTK)</P>
<P>IF(VTK_FOUND)</P>
<P>INCLUDE(${USE_VTK_FILE})</P>
<P>ELSE(VTK_FOUND)</P>
<P>MESSAGE(FATAL_ERROR</P>
<P>"Cannot build without VTK. Please set VTK_DIR.")</P>
<P>ENDIF(VTK_FOUND)</P>
<P>#*******************************************************#</P>
<P># Find QT.</P>
<P>FIND_PACKAGE(QT)</P>
<P>#INCLUDE(${CMAKE_ROOT}/Modules/FindQT.cmake)</P>
<P>IF(QT_FOUND)</P>
<P>INCLUDE_DIRECTORIES(</P>
<P>${QT_INCLUDE_DIR}</P>
<P>)</P>
<P>LINK_LIBRARIES (</P>
<P></P>
<P>${QT_LIBRARIES}</P>
<P>${QT_QT_LIBRARY}</P>
<P>)</P>
<P>ADD_DEFINITIONS( ${QT_DEFINITIONS} )</P>
<P>ADD_DEFINITIONS(-DQT_DLL) </P>
<P>ELSE(QT_FOUND)</P>
<P></P>
<P>MESSAGE(FATAL_ERROR</P>
<P>"Cannot build without QT. Please set QT_DIR.")</P>
<P></P>
<P>ENDIF(QT_FOUND)</P>
<P>&nbsp;</P>
<P>#list all source files here</P>
<P>ADD_EXECUTABLE(guitest kernel.cpp mydialog.cpp mydialog.h mylistboxitem.h)</P>
<P>&nbsp;</P>
<P>==&gt; and now the findQt.cmake file:</P>
<P># Locate Qt include paths and libraries</P>
<P># This module defines</P>
<P># QT_INCLUDE_DIR, where to find qt.h, etc.</P>
<P># QT_LIBRARIES, the libraries to link against to use Qt.</P>
<P># QT_DEFINITIONS, definitions to use when compiling code that uses Qt.</P>
<P># QT_FOUND, If false, don't try to use Qt.</P>
<P>#if you need the multithreaded version of Qt, set QT_MT_REQUIRED to TRUE</P>
<P># also defined, but not for general use are</P>
<P># QT_MOC_EXECUTABLE, where to find the moc tool.</P>
<P># QT_UIC_EXECUTABLE, where to find the uic tool.</P>
<P># QT_QT_LIBRARY, where to find the Qt library.</P>
<P># QT_QTMAIN_LIBRARY, where to find the qtmain library. This is only required by Qt3 on Windows.</P>
<P># These are around for backwards compatibility </P>
<P># they will be set</P>
<P># QT_WRAP_CPP, set true if QT_MOC_EXECUTABLE is found</P>
<P># QT_WRAP_UI set true if QT_UIC_EXECUTABLE is found</P>
<P>&nbsp;</P>
<P>FIND_PATH(QT_INCLUDE_DIR qt.h</P>
<P>$ENV{QTDIR}/include</P>
<P>/usr/lib/qt3/include # my location</P>
<P>/usr/local/qt/include</P>
<P>/usr/local/include</P>
<P>/usr/lib/qt/include</P>
<P>/usr/include/qt</P>
<P>/usr/include</P>
<P>/usr/share/qt3/include</P>
<P>C:/Progra~1/qt/include</P>
<P>/usr/include/qt3</P>
<P>/usr/X11R6/include</P>
<P>)</P>
<P>IF(QT_INCLUDE_DIR)</P>
<P>#extract the version string from qglobal.h</P>
<P>FILE(READ ${QT_INCLUDE_DIR}/qglobal.h QGLOBAL_H)</P>
<P>STRING(REGEX MATCH "#define[\t ]+QT_VERSION_STR[\t ]+\"([0-9]+.[0-9]+.[0-9]+)\"" QGLOBAL_H "${QGLOBAL_H}")</P>
<P>STRING(REGEX REPLACE ".*\"([0-9]+.[0-9]+.[0-9]+)\".*" "\\1" QGLOBAL_H "${QGLOBAL_H}")</P>
<P># Under windows the qt library (MSVC) has the format qt-mtXYZ where XYZ is the</P>
<P># version X.Y.Z, so we need to remove the dots from version</P>
<P>STRING(REGEX REPLACE "\\." "" qt_version_str_lib "${QGLOBAL_H}")</P>
<P>ELSE(QT_INCLUDE_DIR)</P>
<P>ENDIF(QT_INCLUDE_DIR)</P>
<P>&nbsp;</P>
<P>IF (QT_MT_REQUIRED)</P>
<P>FIND_LIBRARY(QT_QT_LIBRARY</P>
<P>NAMES qt-mt qt-mt${qt_version_str_lib} qt-mt230nc</P>
<P>PATHS</P>
<P>$ENV{QTDIR}/lib</P>
<P>/usr/lib/qt3/lib # my location</P>
<P>/usr/local/qt/lib</P>
<P>/usr/local/lib</P>
<P>/usr/lib/qt/lib</P>
<P>/usr/lib</P>
<P>/usr/share/qt3/lib</P>
<P>C:/Progra~1/qt/lib</P>
<P>/usr/X11R6/lib</P>
<P>)</P>
<P>ELSE (QT_MT_REQUIRED)</P>
<P>FIND_LIBRARY(QT_QT_LIBRARY</P>
<P>NAMES qt qt-${qt_version_str_lib} qt-mt qt-mt230nc</P>
<P>PATHS</P>
<P>$ENV{QTDIR}/lib</P>
<P>/usr/lib/qt3/lib # my location</P>
<P>/usr/local/qt/lib</P>
<P>/usr/local/lib</P>
<P>/usr/lib/qt/lib</P>
<P>/usr/lib</P>
<P>/usr/share/qt3/lib</P>
<P>C:/Progra~1/qt/lib</P>
<P>/usr/X11R6/lib</P>
<P>)</P>
<P>ENDIF (QT_MT_REQUIRED)</P>
<P>IF(QT_QT_LIBRARY)</P>
<P>ELSE(QT_QT_LIBRARY)</P>
<P>ENDIF(QT_QT_LIBRARY)</P>
<P>&nbsp;</P>
<P>FIND_LIBRARY(QT_QASSISTANTCLIENT_LIBRARY</P>
<P>NAMES qassistantclient</P>
<P>PATHS</P>
<P>$ENV{QTDIR}/lib</P>
<P>/usr/lib/qt3/lib # my location</P>
<P>/usr/local/qt/lib</P>
<P>/usr/local/lib</P>
<P>/usr/lib</P>
<P>/usr/share/qt3/lib</P>
<P>C:/Progra~1/qt/lib</P>
<P>/usr/X11R6/lib</P>
<P>)</P>
<P>FIND_PROGRAM(QT_MOC_EXECUTABLE </P>
<P>NAMES moc moc-qt3</P>
<P>PATHS</P>
<P>$ENV{QTDIR}/bin </P>
<P>/usr/lib/qt3/bin # my location</P>
<P>/usr/local/qt/bin</P>
<P>/usr/lib/qt/bin</P>
<P>/usr/share/qt3/bin</P>
<P>C:/Progra~1/qt/bin</P>
<P>/usr/X11R6/bin</P>
<P>)</P>
<P>IF(QT_MOC_EXECUTABLE)</P>
<P>SET ( QT_WRAP_CPP "YES")</P>
<P>ELSE(QT_MOC_EXECUTABLE)</P>
<P>ENDIF(QT_MOC_EXECUTABLE)</P>
<P>FIND_PROGRAM(QT_UIC_EXECUTABLE uic</P>
<P>$ENV{QTDIR}/bin </P>
<P>/usr/lib/qt3/bin # my location</P>
<P>/usr/local/qt/bin</P>
<P>/usr/lib/qt/bin</P>
<P>/usr/share/qt3/bin</P>
<P>C:/Progra~1/qt/bin</P>
<P>/usr/X11R6/bin</P>
<P>)</P>
<P>IF(QT_UIC_EXECUTABLE)</P>
<P>SET ( QT_WRAP_UI "YES")</P>
<P>ELSE(QT_UIC_EXECUTABLE)</P>
<P>ENDIF(QT_UIC_EXECUTABLE)</P>
<P>IF (WIN32)</P>
<P>FIND_LIBRARY(QT_QTMAIN_LIBRARY qtmain</P>
<P>$ENV{QTDIR}/lib C:/Progra~1/qt/lib</P>
<P>DOC "This Library is only needed by and included with Qt3 on MSWindows. It should be NOTFOUND, undefined or IGNORE otherwise."</P>
<P>)</P>
<P>ENDIF (WIN32)</P>
<P>&nbsp;</P>
<P>IF (QT_MIN_VERSION)</P>
<P>STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" qt_major_vers "${qt_version_str}")</P>
<P>STRING(REGEX REPLACE "[0-9]+\\.([0-9]+)\\.[0-9]+" "\\1" qt_minor_vers "${qt_version_str}")</P>
<P>STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" qt_patch_vers "${qt_version_str}")</P>
<P></P>
<P>#now parse the parts of the user given version string into variables </P>
<P>STRING(REGEX MATCH "^[0-9]+\\.[0-9]+\\.[0-9]+$" req_qt_major_vers "${QT_MIN_VERSION}")</P>
<P>IF (NOT req_qt_major_vers)</P>
<P>MESSAGE( FATAL_ERROR "Invalid Qt version string given: \"${QT_MIN_VERSION}\", expected e.g. \"3.1.5\"")</P>
<P>ENDIF (NOT req_qt_major_vers)</P>
<P></P>
<P>STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_qt_major_vers "${QT_MIN_VERSION}")</P>
<P>STRING(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" req_qt_minor_vers "${QT_MIN_VERSION}")</P>
<P>STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_qt_patch_vers "${QT_MIN_VERSION}")</P>
<P></P>
<P># req = "6.5.4", qt = "3.2.1"</P>
<P></P>
<P>IF (req_qt_major_vers GREATER qt_major_vers) # (6 &gt; 3) ?</P>
<P>MESSAGE( FATAL_ERROR "Qt major version not matched (required: ${QT_MIN_VERSION}, found: ${qt_version_str})") # yes</P>
<P>ELSE (req_qt_major_vers GREATER qt_major_vers) # no</P>
<P>IF (req_qt_major_vers LESS qt_major_vers) # (6 &lt; 3) ?</P>
<P>SET( QT_VERSION_BIG_ENOUGH "YES" ) # yes</P>
<P>ELSE (req_qt_major_vers LESS qt_major_vers) # ( 6==3) ?</P>
<P>IF (req_qt_minor_vers GREATER qt_minor_vers) # (5&gt;2) ?</P>
<P>MESSAGE( FATAL_ERROR "Qt minor version not matched (required: ${QT_MIN_VERSION}, found: ${qt_version_str})") # yes</P>
<P>ELSE (req_qt_minor_vers GREATER qt_minor_vers) # no</P>
<P>IF (req_qt_minor_vers LESS qt_minor_vers) # (5&lt;2) ?</P>
<P>SET( QT_VERSION_BIG_ENOUGH "YES" ) # yes</P>
<P>ELSE (req_qt_minor_vers LESS qt_minor_vers) # (5==2)</P>
<P>IF (req_qt_patch_vers GREATER qt_patch_vers) # (4&gt;1) ?</P>
<P>MESSAGE( FATAL_ERROR "Qt patch level not matched (required: ${QT_MIN_VERSION}, found: ${qt_version_str})") # yes</P>
<P>ELSE (req_qt_patch_vers GREATER qt_patch_vers) # (4&gt;1) ?</P>
<P>SET( QT_VERSION_BIG_ENOUGH "YES" ) # yes</P>
<P>ENDIF (req_qt_patch_vers GREATER qt_patch_vers) # (4&gt;1) ?</P>
<P>ENDIF (req_qt_minor_vers LESS qt_minor_vers)</P>
<P>ENDIF (req_qt_minor_vers GREATER qt_minor_vers)</P>
<P>ENDIF (req_qt_major_vers LESS qt_major_vers)</P>
<P>ENDIF (req_qt_major_vers GREATER qt_major_vers)</P>
<P>ENDIF (QT_MIN_VERSION)</P>
<P># if the include a library are found then we have it</P>
<P>IF(QT_INCLUDE_DIR)</P>
<P>IF(QT_QT_LIBRARY)</P>
<P>SET( QT_FOUND "YES" )</P>
<P>ENDIF(QT_QT_LIBRARY)</P>
<P>ENDIF(QT_INCLUDE_DIR)</P>
<P></P>
<P>IF(QT_FOUND)</P>
<P>SET( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )</P>
<P>SET( QT_DEFINITIONS "")</P>
<P></P>
<P>IF (WIN32 AND NOT CYGWIN)</P>
<P>IF (QT_QTMAIN_LIBRARY)</P>
<P># for version 3</P>
<P>SET (QT_DEFINITIONS "-DQT_DLL -DQT_THREAD_SUPPORT -DNO_DEBUG")</P>
<P>SET (QT_LIBRARIES imm32.lib ${QT_QT_LIBRARY} ${QT_QTMAIN_LIBRARY} )</P>
<P>SET (QT_LIBRARIES ${QT_LIBRARIES} winmm wsock32)</P>
<P>ELSE (QT_QTMAIN_LIBRARY)</P>
<P># for version 2</P>
<P>SET (QT_LIBRARIES imm32.lib ws2_32.lib ${QT_QT_LIBRARY} )</P>
<P>ENDIF (QT_QTMAIN_LIBRARY)</P>
<P>ELSE (WIN32 AND NOT CYGWIN)</P>
<P>SET (QT_LIBRARIES ${QT_QT_LIBRARY} )</P>
<P></P>
<P>SET (QT_DEFINITIONS "-DQT_SHARED -DQT_NO_DEBUG")</P>
<P>IF(QT_QT_LIBRARY MATCHES "qt-mt")</P>
<P>SET (QT_DEFINITIONS ${QT_DEFINITIONS} -DQT_THREAD_SUPPORT -D_REENTRANT)</P>
<P>ENDIF(QT_QT_LIBRARY MATCHES "qt-mt")</P>
<P></P>
<P>ENDIF (WIN32 AND NOT CYGWIN)</P>
<P></P>
<P>IF (QT_QASSISTANTCLIENT_LIBRARY)</P>
<P>SET (QT_LIBRARIES ${QT_QASSISTANTCLIENT_LIBRARY} ${QT_LIBRARIES})</P>
<P>ENDIF (QT_QASSISTANTCLIENT_LIBRARY)</P>
<P></P>
<P># Backwards compatibility for CMake1.4 and 1.2</P>
<P>SET (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )</P>
<P>SET (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )</P>
<P># for unix add X11 stuff</P>
<P>IF(UNIX)</P>
<P>FIND_PACKAGE(X11)</P>
<P>IF (X11_FOUND)</P>
<P>SET (QT_LIBRARIES ${QT_LIBRARIES} ${X11_LIBRARIES})</P>
<P>ENDIF (X11_FOUND)</P>
<P>IF (CMAKE_DL_LIBS)</P>
<P>SET (QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_DL_LIBS})</P>
<P>ENDIF (CMAKE_DL_LIBS)</P>
<P>ENDIF(UNIX)</P>
<P>IF(QT_QT_LIBRARY MATCHES "qt-mt")</P>
<P>FIND_PACKAGE(Threads)</P>
<P>SET(QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})</P>
<P>ENDIF(QT_QT_LIBRARY MATCHES "qt-mt")</P>
<P>ENDIF(QT_FOUND)</P>
<P>&nbsp;</P>
<P>IF (QT_MOC_EXECUTABLE) </P>
<P>SET ( QT_WRAP_CPP "YES") </P>
<P>ENDIF (QT_MOC_EXECUTABLE) </P>
<P></P>
<P>IF (QT_UIC_EXECUTABLE) </P>
<P>SET ( QT_WRAP_UI "YES") </P>
<P>ENDIF (QT_UIC_EXECUTABLE) </P>
<P></P>
<P>&nbsp;</P>
<P>MARK_AS_ADVANCED(</P>
<P>QT_INCLUDE_DIR</P>
<P>QT_QT_LIBRARY</P>
<P>QT_QTMAIN_LIBRARY</P>
<P>QT_QASSISTANTCLIENT_LIBRARY</P>
<P>QT_UIC_EXECUTABLE</P>
<P>QT_MOC_EXECUTABLE</P>
<P>QT_WRAP_CPP</P>
<P>QT_WRAP_UI</P>
<P>) </P>
<P>==&gt; So, if someone can give me some suggestions or references somewhere I'll be very grateful,</P>
<P>thanks in advance.Luca.</P></FONT></br><p style="margin-top:11px;padding-top:3px;background-image: url(http://mail.lycos.co.uk/Images/Mail/_content/dot.gif);background-repeat: repeat-x;background-position: 0px 0px;"><br>
_________________________________
<br>
<strong>Lycos DSL Cityflat für nur 4,95 EUR.</strong> Das Weihnachtsangebot: Bereitstellung für 0 EUR & Siemens-Router für 0 EUR.<br>
<a href="http://www.lycos.de/startseite/online/dsl/index.html?prod=DSL&trackingID=email_footerhtm">Jetzt zuschlagen!</a></div></body></html>