[Cmake-commits] [cmake-commits] hoffman committed FindQt4.cmake 1.96.2.22 1.96.2.23

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Mar 31 10:29:03 EDT 2009


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv9765/Modules

Modified Files:
      Tag: CMake-2-6
	FindQt4.cmake 
Log Message:
ENH: next RC


Index: FindQt4.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindQt4.cmake,v
retrieving revision 1.96.2.22
retrieving revision 1.96.2.23
diff -C 2 -d -r1.96.2.22 -r1.96.2.23
*** FindQt4.cmake	10 Feb 2009 22:28:07 -0000	1.96.2.22
--- FindQt4.cmake	31 Mar 2009 14:28:51 -0000	1.96.2.23
***************
*** 4,11 ****
  # This qmake is then used to detect basically everything else.
  # This module defines a number of key variables and macros. 
! # First is QT_USE_FILE which is the path to a CMake file that can be included 
! # to compile Qt 4 applications and libraries.  By default, the QtCore and QtGui 
! # libraries are loaded. This behavior can be changed by setting one or more 
! # of the following variables to true before doing INCLUDE(${QT_USE_FILE}):
  #                    QT_DONT_USE_QTCORE
  #                    QT_DONT_USE_QTGUI
--- 4,21 ----
  # This qmake is then used to detect basically everything else.
  # This module defines a number of key variables and macros. 
! # The variable QT_USE_FILE is set which is the path to a CMake file that can be included 
! # to compile Qt 4 applications and libraries.  It sets up the compilation
! # environment for include directories, preprocessor defines and populates a
! # QT_LIBRARIES variable.
! #
! # Typical usage could be something like:
! #   find_package(Qt4 4.4.3 COMPONENTS QtCore QtGui QtXml REQUIRED )
! #   include(${QT_USE_FILE})
! #   add_executable(myexe main.cpp)
! #   target_link_libraries(myexe ${QT_LIBRARIES})
! #
! # When using the components argument, QT_USE_QT* variables are automatically set
! # for the QT_USE_FILE to pick up.  If one wishes to manually set them, the
! # available ones to set include:
  #                    QT_DONT_USE_QTCORE
  #                    QT_DONT_USE_QTGUI
***************
*** 33,49 ****
  #                    QT_USE_PHONON
  #
- # The file pointed to by QT_USE_FILE will set up your compile environment
- # by adding include directories, preprocessor defines, and populate a
- # QT_LIBRARIES variable containing all the Qt libraries and their dependencies.
- # Add the QT_LIBRARIES variable to your TARGET_LINK_LIBRARIES.
- #
- # Typical usage could be something like:
- #   FIND_PACKAGE(Qt4)
- #   SET(QT_USE_QTXML 1)
- #   INCLUDE(${QT_USE_FILE})
- #   ADD_EXECUTABLE(myexe main.cpp)
- #   TARGET_LINK_LIBRARIES(myexe ${QT_LIBRARIES})
- #
- #
  # There are also some files that need processing by some Qt tools such as moc
  # and uic.  Listed below are macros that may be used to process those files.
--- 43,46 ----
***************
*** 129,132 ****
--- 126,130 ----
  #
  #
+ #  Below is a detailed list of variables that FindQt4.cmake sets.
  #  QT_FOUND         If false, don't try to use Qt.
  #  QT4_FOUND        If false, don't try to use Qt 4.
***************
*** 268,271 ****
--- 266,288 ----
  #  QT_QT_LIBRARY        Qt-Library is now split
  
+ 
+ # Use FIND_PACKAGE( Qt4 COMPONENTS ... ) to enable modules
+ IF( Qt4_FIND_COMPONENTS )
+   FOREACH( component ${Qt4_FIND_COMPONENTS} )
+     STRING( TOUPPER ${component} _COMPONENT )
+     SET( QT_USE_${_COMPONENT} 1 )
+   ENDFOREACH( component )
+   
+   # To make sure we don't use QtCore or QtGui when not in COMPONENTS
+   IF(NOT QT_USE_QTCORE)
+     SET( QT_DONT_USE_QTCORE 1 )
+   ENDIF(NOT QT_USE_QTCORE)
+   
+   IF(NOT QT_USE_QTGUI)
+     SET( QT_DONT_USE_QTGUI 1 )
+   ENDIF(NOT QT_USE_QTGUI)
+ 
+ ENDIF( Qt4_FIND_COMPONENTS )
+ 
  # If Qt3 has already been found, fail.
  IF(QT_QT_LIBRARY)
***************
*** 373,376 ****
--- 390,405 ----
      STRING(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_qt_patch_vers "${QT_MIN_VERSION}")
  
+   # Suppport finding at least a particular version, for instance FIND_PACKAGE( Qt4 4.4.3 )
+   # This implementation is a hack to avoid duplicating code and make sure we stay
+   # source-compatible with CMake 2.6.x
+   # For CMake 2.8, we should not set QT_MIN_VERSION but only use Qt4_FIND_VERSION_MAJOR,
+   # Qt4_FIND_VERSION_MINOR, etc
+   IF( Qt4_FIND_VERSION )
+     SET( QT_MIN_VERSION ${Qt4_FIND_VERSION} )
+     SET( req_qt_major_vers ${Qt4_FIND_VERSION_MAJOR} )
+     SET( req_qt_minor_vers ${Qt4_FIND_VERSION_MINOR} )
+     SET( req_qt_patch_vers ${Qt4_FIND_VERSION_PATCH} )
+   ENDIF( Qt4_FIND_VERSION )
+ 
      IF (NOT req_qt_major_vers EQUAL 4)
        MESSAGE( FATAL_ERROR "Invalid Qt version string given: \"${QT_MIN_VERSION}\", major version 4 is required, e.g. \"4.0.1\"")
***************
*** 386,389 ****
--- 415,432 ----
      MATH(EXPR found_vers "${QT_VERSION_MAJOR}*10000 + ${QT_VERSION_MINOR}*100 + ${QT_VERSION_PATCH}")
  
+   # Support finding *exactly* a particular version, for instance FIND_PACKAGE( Qt4 4.4.3 EXACT )
+   # The 'else' branch should be removed for CMake 2.8
+   IF( Qt4_FIND_VERSION_EXACT )
+     IF(found_vers EQUAL req_vers)
+       SET( QT4_QMAKE_FOUND TRUE )
+     ELSE(found_vers EQUAL req_vers)
+       SET( QT4_QMAKE_FOUND FALSE )
+       IF (found_vers LESS req_vers)
+         SET(QT4_INSTALLED_VERSION_TOO_OLD TRUE)
+       ELSE (found_vers LESS req_vers)
+         SET(QT4_INSTALLED_VERSION_TOO_NEW TRUE)
+       ENDIF (found_vers LESS req_vers)
+     ENDIF(found_vers EQUAL req_vers)
+   ELSE( Qt4_FIND_VERSION_EXACT )
      IF (found_vers LESS req_vers)
        SET(QT4_QMAKE_FOUND FALSE)
***************
*** 392,395 ****
--- 435,439 ----
        SET(QT4_QMAKE_FOUND TRUE)
      ENDIF (found_vers LESS req_vers)
+   ENDIF( Qt4_FIND_VERSION_EXACT )
    ENDIF (qt_version_tmp)
  
***************
*** 527,530 ****
--- 571,578 ----
      SET(QT_QAXSERVER_LIBRARY_RELEASE NOTFOUND)
      SET(QT_QAXSERVER_LIBRARY_DEBUG NOTFOUND)
+     IF(WIN32)
+       SET(QT_QTMAIN_LIBRARY_DEBUG NOTFOUND)
+       SET(QT_QTMAIN_LIBRARY_RELEASE NOTFOUND)
+     ENDIF(WIN32)
    ENDIF(QT_QMAKE_CHANGED)
  
***************
*** 622,625 ****
--- 670,676 ----
    CHECK_SYMBOL_EXISTS(Q_WS_MAC "QtCore/qglobal.h" Q_WS_MAC)
    IF(Q_WS_MAC)
+     IF(QT_QMAKE_CHANGED)
+       UNSET(QT_MAC_USE_COCOA CACHE)
+     ENDIF(QT_QMAKE_CHANGED)
      CHECK_SYMBOL_EXISTS(QT_MAC_USE_COCOA "QtCore/qconfig.h" QT_MAC_USE_COCOA)
    ENDIF(Q_WS_MAC)
***************
*** 736,742 ****
  
        IF(QT_QMAKE_CHANGED)
!         SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE FILEPATH "The Qt ${basename} library" FORCE)
        ELSE(QT_QMAKE_CHANGED)
!         SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE FILEPATH "The Qt ${basename} library")
        ENDIF(QT_QMAKE_CHANGED)
  
--- 787,793 ----
  
        IF(QT_QMAKE_CHANGED)
!         SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE)
        ELSE(QT_QMAKE_CHANGED)
!         SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library")
        ENDIF(QT_QMAKE_CHANGED)
  
***************
*** 799,826 ****
  
  
-   # find moc and uic using qmake
-   QT_QUERY_QMAKE(QT_MOC_EXECUTABLE_INTERNAL "QMAKE_MOC")
-   QT_QUERY_QMAKE(QT_UIC_EXECUTABLE_INTERNAL "QMAKE_UIC")
- 
-   # make sure we have / and not \ as qmake gives on windows
-   FILE(TO_CMAKE_PATH 
-     "${QT_MOC_EXECUTABLE_INTERNAL}" QT_MOC_EXECUTABLE_INTERNAL)
-   # make sure we have / and not \ as qmake gives on windows
-   FILE(TO_CMAKE_PATH 
-     "${QT_UIC_EXECUTABLE_INTERNAL}" QT_UIC_EXECUTABLE_INTERNAL)
- 
-   IF(QT_QMAKE_CHANGED)
-     SET(QT_MOC_EXECUTABLE 
-       ${QT_MOC_EXECUTABLE_INTERNAL} CACHE FILEPATH "The moc executable" FORCE)
-     SET(QT_UIC_EXECUTABLE 
-       ${QT_UIC_EXECUTABLE_INTERNAL} CACHE FILEPATH "The uic executable" FORCE)
-   ELSE(QT_QMAKE_CHANGED)
-     SET(QT_MOC_EXECUTABLE 
-       ${QT_MOC_EXECUTABLE_INTERNAL} CACHE FILEPATH "The moc executable")
-     SET(QT_UIC_EXECUTABLE 
-       ${QT_UIC_EXECUTABLE_INTERNAL} CACHE FILEPATH "The uic executable")
-   ENDIF(QT_QMAKE_CHANGED)
- 
    IF(QT_QMAKE_CHANGED)
      SET(QT_UIC3_EXECUTABLE NOTFOUND)
      SET(QT_RCC_EXECUTABLE NOTFOUND)
--- 850,856 ----
  
  
    IF(QT_QMAKE_CHANGED)
+     SET(QT_UIC_EXECUTABLE NOTFOUND)
+     SET(QT_MOC_EXECUTABLE NOTFOUND)
      SET(QT_UIC3_EXECUTABLE NOTFOUND)
      SET(QT_RCC_EXECUTABLE NOTFOUND)
***************
*** 830,833 ****
--- 860,875 ----
      SET(QT_LRELEASE_EXECUTABLE NOTFOUND)
    ENDIF(QT_QMAKE_CHANGED)
+   
+   FIND_PROGRAM(QT_MOC_EXECUTABLE
+     NAMES moc-qt4 moc
+     PATHS ${QT_BINARY_DIR}
+     NO_DEFAULT_PATH
+     )
+ 
+   FIND_PROGRAM(QT_UIC_EXECUTABLE
+     NAMES uic-qt4 uic
+     PATHS ${QT_BINARY_DIR}
+     NO_DEFAULT_PATH
+     )
  
    FIND_PROGRAM(QT_UIC3_EXECUTABLE
***************
*** 856,860 ****
  
    FIND_PROGRAM(QT_LUPDATE_EXECUTABLE
!     NAMES lupdate
      PATHS ${QT_BINARY_DIR}
      NO_DEFAULT_PATH
--- 898,902 ----
  
    FIND_PROGRAM(QT_LUPDATE_EXECUTABLE
!     NAMES lupdate-qt4 lupdate
      PATHS ${QT_BINARY_DIR}
      NO_DEFAULT_PATH
***************
*** 862,866 ****
  
    FIND_PROGRAM(QT_LRELEASE_EXECUTABLE
!     NAMES lrelease
      PATHS ${QT_BINARY_DIR}
      NO_DEFAULT_PATH
--- 904,908 ----
  
    FIND_PROGRAM(QT_LRELEASE_EXECUTABLE
!     NAMES lrelease-qt4 lrelease
      PATHS ${QT_BINARY_DIR}
      NO_DEFAULT_PATH
***************
*** 1222,1226 ****
           GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE)
           GET_FILENAME_COMPONENT(qm ${_abs_FILE} NAME_WE)
!          SET(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm")
  
           ADD_CUSTOM_COMMAND(OUTPUT ${qm}
--- 1264,1274 ----
           GET_FILENAME_COMPONENT(_abs_FILE ${_current_FILE} ABSOLUTE)
           GET_FILENAME_COMPONENT(qm ${_abs_FILE} NAME_WE)
!          GET_SOURCE_FILE_PROPERTY(output_location ${_abs_FILE} OUTPUT_LOCATION)
!          IF(output_location)
!            FILE(MAKE_DIRECTORY "${output_location}")
!            SET(qm "${output_location}/${qm}.qm")
!          ELSE(output_location)
!            SET(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm")
!          ENDIF(output_location)
  
           ADD_CUSTOM_COMMAND(OUTPUT ${qm}
***************
*** 1560,1568 ****
     
     SET(QT_QMAKE_EXECUTABLE "${QT_QMAKE_EXECUTABLE}-NOTFOUND" CACHE FILEPATH "Invalid qmake found" FORCE)
     IF(Qt4_FIND_REQUIRED)
        IF(QT4_INSTALLED_VERSION_TOO_OLD)
!          MESSAGE(FATAL_ERROR "The installed Qt version ${QTVERSION} is too old, at least version ${QT_MIN_VERSION} is required")
        ELSE(QT4_INSTALLED_VERSION_TOO_OLD)
!          MESSAGE( FATAL_ERROR "Qt qmake not found!")
        ENDIF(QT4_INSTALLED_VERSION_TOO_OLD)
     ELSE(Qt4_FIND_REQUIRED)
--- 1608,1628 ----
     
     SET(QT_QMAKE_EXECUTABLE "${QT_QMAKE_EXECUTABLE}-NOTFOUND" CACHE FILEPATH "Invalid qmake found" FORCE)
+    
+    # The code below is overly complex to make sure we do not break compatibility with CMake 2.6.x
+    # For CMake 2.8, it should be simplified by getting rid of QT4_INSTALLED_VERSION_TOO_OLD and 
+    # QT4_INSTALLED_VERSION_TOO_NEW
     IF(Qt4_FIND_REQUIRED)
        IF(QT4_INSTALLED_VERSION_TOO_OLD)
!     IF( Qt4_FIND_VERSION_EXACT )
!       MESSAGE(FATAL_ERROR "The installed Qt version ${QTVERSION} is too old, version ${QT_MIN_VERSION} is required")
!     ELSE( Qt4_FIND_VERSION_EXACT )
!       MESSAGE(FATAL_ERROR "The installed Qt version ${QTVERSION} is too old, at least version ${QT_MIN_VERSION} is required")
!     ENDIF( Qt4_FIND_VERSION_EXACT )
        ELSE(QT4_INSTALLED_VERSION_TOO_OLD)
!       IF( Qt4_FIND_VERSION_EXACT AND QT4_INSTALLED_VERSION_TOO_NEW )
!       MESSAGE(FATAL_ERROR "The installed Qt version ${QTVERSION} is too new, version ${QT_MIN_VERSION} is required")
!     ELSE( Qt4_FIND_VERSION_EXACT AND QT4_INSTALLED_VERSION_TOO_NEW )
!       MESSAGE( FATAL_ERROR "Qt qmake not found!")
!     ENDIF( Qt4_FIND_VERSION_EXACT AND QT4_INSTALLED_VERSION_TOO_NEW )
        ENDIF(QT4_INSTALLED_VERSION_TOO_OLD)
     ELSE(Qt4_FIND_REQUIRED)



More information about the Cmake-commits mailing list