FindQt3.cmake 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. #.rst:
  2. # FindQt3
  3. # -------
  4. #
  5. # Locate Qt include paths and libraries
  6. #
  7. # This module defines:
  8. #
  9. # ::
  10. #
  11. # QT_INCLUDE_DIR - where to find qt.h, etc.
  12. # QT_LIBRARIES - the libraries to link against to use Qt.
  13. # QT_DEFINITIONS - definitions to use when
  14. # compiling code that uses Qt.
  15. # QT_FOUND - If false, don't try to use Qt.
  16. # QT_VERSION_STRING - the version of Qt found
  17. #
  18. #
  19. #
  20. # If you need the multithreaded version of Qt, set QT_MT_REQUIRED to
  21. # TRUE
  22. #
  23. # Also defined, but not for general use are:
  24. #
  25. # ::
  26. #
  27. # QT_MOC_EXECUTABLE, where to find the moc tool.
  28. # QT_UIC_EXECUTABLE, where to find the uic tool.
  29. # QT_QT_LIBRARY, where to find the Qt library.
  30. # QT_QTMAIN_LIBRARY, where to find the qtmain
  31. # library. This is only required by Qt3 on Windows.
  32. # These are around for backwards compatibility
  33. # they will be set
  34. # QT_WRAP_CPP, set true if QT_MOC_EXECUTABLE is found
  35. # QT_WRAP_UI set true if QT_UIC_EXECUTABLE is found
  36. #=============================================================================
  37. # Copyright 2005-2009 Kitware, Inc.
  38. #
  39. # Distributed under the OSI-approved BSD License (the "License");
  40. # see accompanying file Copyright.txt for details.
  41. #
  42. # This software is distributed WITHOUT ANY WARRANTY; without even the
  43. # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  44. # See the License for more information.
  45. #=============================================================================
  46. # (To distribute this file outside of CMake, substitute the full
  47. # License text for the above reference.)
  48. # If Qt4 has already been found, fail.
  49. if(QT4_FOUND)
  50. if(Qt3_FIND_REQUIRED)
  51. message( FATAL_ERROR "Qt3 and Qt4 cannot be used together in one project.")
  52. else()
  53. if(NOT Qt3_FIND_QUIETLY)
  54. message( STATUS "Qt3 and Qt4 cannot be used together in one project.")
  55. endif()
  56. return()
  57. endif()
  58. endif()
  59. file(GLOB GLOB_PATHS /usr/lib/qt-3*)
  60. foreach(GLOB_PATH ${GLOB_PATHS})
  61. list(APPEND GLOB_PATHS_BIN "${GLOB_PATH}/bin")
  62. endforeach()
  63. find_path(QT_INCLUDE_DIR qt.h
  64. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
  65. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
  66. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
  67. $ENV{QTDIR}/include
  68. ${GLOB_PATHS}
  69. /usr/local/qt/include
  70. /usr/lib/qt/include
  71. /usr/lib/qt3/include
  72. /usr/include/qt
  73. /usr/share/qt3/include
  74. C:/Progra~1/qt/include
  75. /usr/include/qt3
  76. /usr/local/include/X11/qt3
  77. )
  78. # if qglobal.h is not in the qt_include_dir then set
  79. # QT_INCLUDE_DIR to NOTFOUND
  80. if(NOT EXISTS ${QT_INCLUDE_DIR}/qglobal.h)
  81. set(QT_INCLUDE_DIR QT_INCLUDE_DIR-NOTFOUND CACHE PATH "path to Qt3 include directory" FORCE)
  82. endif()
  83. if(QT_INCLUDE_DIR)
  84. #extract the version string from qglobal.h
  85. file(STRINGS ${QT_INCLUDE_DIR}/qglobal.h QGLOBAL_H REGEX "#define[\t ]+QT_VERSION_STR[\t ]+\"[0-9]+.[0-9]+.[0-9]+[a-z]*\"")
  86. string(REGEX REPLACE ".*\"([0-9]+.[0-9]+.[0-9]+[a-z]*)\".*" "\\1" qt_version_str "${QGLOBAL_H}")
  87. unset(QGLOBAL_H)
  88. # Under windows the qt library (MSVC) has the format qt-mtXYZ where XYZ is the
  89. # version X.Y.Z, so we need to remove the dots from version
  90. string(REGEX REPLACE "\\." "" qt_version_str_lib "${qt_version_str}")
  91. set(QT_VERSION_STRING "${qt_version_str}")
  92. endif()
  93. file(GLOB GLOB_PATHS_LIB /usr/lib/qt-3*/lib/)
  94. if (QT_MT_REQUIRED)
  95. find_library(QT_QT_LIBRARY
  96. NAMES
  97. qt-mt qt-mt${qt_version_str_lib} qt-mtnc${qt_version_str_lib}
  98. qt-mtedu${qt_version_str_lib} qt-mt230nc qt-mtnc321 qt-mt3
  99. PATHS
  100. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
  101. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
  102. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
  103. ENV QTDIR
  104. ${GLOB_PATHS_LIB}
  105. /usr/local/qt
  106. /usr/lib/qt
  107. /usr/lib/qt3
  108. /usr/share/qt3
  109. C:/Progra~1/qt
  110. PATH_SUFFIXES
  111. lib
  112. )
  113. else ()
  114. find_library(QT_QT_LIBRARY
  115. NAMES
  116. qt qt-${qt_version_str_lib} qt-edu${qt_version_str_lib}
  117. qt-mt qt-mt${qt_version_str_lib} qt-mtnc${qt_version_str_lib}
  118. qt-mtedu${qt_version_str_lib} qt-mt230nc qt-mtnc321 qt-mt3
  119. PATHS
  120. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
  121. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
  122. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
  123. ENV QTDIR
  124. ${GLOB_PATHS_LIB}
  125. /usr/local/qt
  126. /usr/lib/qt
  127. /usr/lib/qt3
  128. /usr/share/qt3
  129. C:/Progra~1/qt/lib
  130. PATH_SUFFIXES
  131. lib
  132. )
  133. endif ()
  134. find_library(QT_QASSISTANTCLIENT_LIBRARY
  135. NAMES qassistantclient
  136. PATHS
  137. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
  138. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
  139. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
  140. ENV QTDIR
  141. ${GLOB_PATHS_LIB}
  142. /usr/local/qt
  143. /usr/lib/qt3
  144. /usr/share/qt3
  145. C:/Progra~1/qt
  146. PATH_SUFFIXES
  147. lib
  148. )
  149. # Qt 3 should prefer QTDIR over the PATH
  150. find_program(QT_MOC_EXECUTABLE
  151. NAMES moc-qt3 moc3 moc3-mt moc
  152. HINTS
  153. ENV QTDIR
  154. PATHS
  155. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
  156. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
  157. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
  158. ${GLOB_PATHS_BIN}
  159. /usr/local/lib/qt3
  160. /usr/local/qt
  161. /usr/lib/qt
  162. /usr/lib/qt3
  163. /usr/share/qt3
  164. C:/Progra~1/qt
  165. /usr/X11R6
  166. PATH_SUFFIXES
  167. bin
  168. )
  169. if(QT_MOC_EXECUTABLE)
  170. set ( QT_WRAP_CPP "YES")
  171. endif()
  172. # Qt 3 should prefer QTDIR over the PATH
  173. find_program(QT_UIC_EXECUTABLE
  174. NAMES uic-qt3 uic3 uic3-mt uic
  175. HINTS
  176. ENV QTDIR
  177. PATHS
  178. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]/include/Qt"
  179. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]/include/Qt"
  180. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]/include/Qt"
  181. ${GLOB_PATHS_BIN}
  182. /usr/local/qt
  183. /usr/lib/qt
  184. /usr/lib/qt3
  185. /usr/share/qt3
  186. C:/Progra~1/qt
  187. /usr/X11R6
  188. PATH_SUFFIXES
  189. bin
  190. )
  191. if(QT_UIC_EXECUTABLE)
  192. set ( QT_WRAP_UI "YES")
  193. endif()
  194. if (WIN32)
  195. find_library(QT_QTMAIN_LIBRARY qtmain
  196. HINTS
  197. ENV QTDIR
  198. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.1;InstallDir]"
  199. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.2.0;InstallDir]"
  200. "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\3.1.0;InstallDir]"
  201. PATHS
  202. "$ENV{ProgramFiles}/qt"
  203. "C:/Program Files/qt"
  204. PATH_SUFFIXES
  205. lib
  206. DOC "This Library is only needed by and included with Qt3 on MSWindows. It should be NOTFOUND, undefined or IGNORE otherwise."
  207. )
  208. endif ()
  209. #support old QT_MIN_VERSION if set, but not if version is supplied by find_package()
  210. if(NOT Qt3_FIND_VERSION AND QT_MIN_VERSION)
  211. set(Qt3_FIND_VERSION ${QT_MIN_VERSION})
  212. endif()
  213. # if the include a library are found then we have it
  214. include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
  215. FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt3
  216. REQUIRED_VARS QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE
  217. VERSION_VAR QT_VERSION_STRING)
  218. set(QT_FOUND ${QT3_FOUND} )
  219. if(QT_FOUND)
  220. set( QT_LIBRARIES ${QT_LIBRARIES} ${QT_QT_LIBRARY} )
  221. set( QT_DEFINITIONS "")
  222. if (WIN32 AND NOT CYGWIN)
  223. if (QT_QTMAIN_LIBRARY)
  224. # for version 3
  225. set (QT_DEFINITIONS -DQT_DLL -DQT_THREAD_SUPPORT -DNO_DEBUG)
  226. set (QT_LIBRARIES imm32.lib ${QT_QT_LIBRARY} ${QT_QTMAIN_LIBRARY} )
  227. set (QT_LIBRARIES ${QT_LIBRARIES} winmm wsock32)
  228. else ()
  229. # for version 2
  230. set (QT_LIBRARIES imm32.lib ws2_32.lib ${QT_QT_LIBRARY} )
  231. endif ()
  232. else ()
  233. set (QT_LIBRARIES ${QT_QT_LIBRARY} )
  234. set (QT_DEFINITIONS -DQT_SHARED -DQT_NO_DEBUG)
  235. if(QT_QT_LIBRARY MATCHES "qt-mt")
  236. set (QT_DEFINITIONS ${QT_DEFINITIONS} -DQT_THREAD_SUPPORT -D_REENTRANT)
  237. endif()
  238. endif ()
  239. if (QT_QASSISTANTCLIENT_LIBRARY)
  240. set (QT_LIBRARIES ${QT_QASSISTANTCLIENT_LIBRARY} ${QT_LIBRARIES})
  241. endif ()
  242. # Backwards compatibility for CMake1.4 and 1.2
  243. set (QT_MOC_EXE ${QT_MOC_EXECUTABLE} )
  244. set (QT_UIC_EXE ${QT_UIC_EXECUTABLE} )
  245. # for unix add X11 stuff
  246. if(UNIX)
  247. find_package(X11)
  248. if (X11_FOUND)
  249. set (QT_LIBRARIES ${QT_LIBRARIES} ${X11_LIBRARIES})
  250. endif ()
  251. if (CMAKE_DL_LIBS)
  252. set (QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_DL_LIBS})
  253. endif ()
  254. endif()
  255. if(QT_QT_LIBRARY MATCHES "qt-mt")
  256. find_package(Threads)
  257. set(QT_LIBRARIES ${QT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
  258. endif()
  259. endif()
  260. if(QT_MOC_EXECUTABLE)
  261. execute_process(COMMAND ${QT_MOC_EXECUTABLE} "-v"
  262. OUTPUT_VARIABLE QTVERSION_MOC
  263. ERROR_QUIET)
  264. endif()
  265. if(QT_UIC_EXECUTABLE)
  266. execute_process(COMMAND ${QT_UIC_EXECUTABLE} "-version"
  267. OUTPUT_VARIABLE QTVERSION_UIC
  268. ERROR_QUIET)
  269. endif()
  270. set(_QT_UIC_VERSION_3 FALSE)
  271. if("${QTVERSION_UIC}" MATCHES " 3.")
  272. set(_QT_UIC_VERSION_3 TRUE)
  273. endif()
  274. set(_QT_MOC_VERSION_3 FALSE)
  275. if("${QTVERSION_MOC}" MATCHES " 3.")
  276. set(_QT_MOC_VERSION_3 TRUE)
  277. endif()
  278. set(QT_WRAP_CPP FALSE)
  279. if (QT_MOC_EXECUTABLE AND _QT_MOC_VERSION_3)
  280. set ( QT_WRAP_CPP TRUE)
  281. endif ()
  282. set(QT_WRAP_UI FALSE)
  283. if (QT_UIC_EXECUTABLE AND _QT_UIC_VERSION_3)
  284. set ( QT_WRAP_UI TRUE)
  285. endif ()
  286. mark_as_advanced(
  287. QT_INCLUDE_DIR
  288. QT_QT_LIBRARY
  289. QT_QTMAIN_LIBRARY
  290. QT_QASSISTANTCLIENT_LIBRARY
  291. QT_UIC_EXECUTABLE
  292. QT_MOC_EXECUTABLE
  293. QT_WRAP_CPP
  294. QT_WRAP_UI
  295. )