[Cmake-commits] [cmake-commits] clinton committed FindQt4.cmake 1.151 1.152

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Feb 19 15:51:45 EST 2009


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

Modified Files:
	FindQt4.cmake 
Log Message:

ENH:  Support version argument in find_package().
      See bug #8542.



Index: FindQt4.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindQt4.cmake,v
retrieving revision 1.151
retrieving revision 1.152
diff -C 2 -d -r1.151 -r1.152
*** FindQt4.cmake	13 Feb 2009 23:52:02 -0000	1.151
--- FindQt4.cmake	19 Feb 2009 20:51:43 -0000	1.152
***************
*** 373,376 ****
--- 373,388 ----
      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 ****
--- 398,415 ----
      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 ****
--- 418,422 ----
        SET(QT4_QMAKE_FOUND TRUE)
      ENDIF (found_vers LESS req_vers)
+   ENDIF( Qt4_FIND_VERSION_EXACT )
    ENDIF (qt_version_tmp)
  
***************
*** 1551,1559 ****
     
     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)
--- 1578,1598 ----
     
     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