~ubuntu-branches/ubuntu/saucy/quassel/saucy-proposed

« back to all changes in this revision

Viewing changes to cmake/modules/FindQt4.cmake

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-02-17 12:49:50 UTC
  • mto: This revision was merged to the branch mainline in revision 59.
  • Revision ID: james.westby@ubuntu.com-20100217124950-v9hajw5d2xa6fszn
Tags: upstream-0.6~beta1
ImportĀ upstreamĀ versionĀ 0.6~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
#                    QT_USE_PHONON
53
53
#                    QT_USE_QTSCRIPTTOOLS
54
54
#
 
55
#  QT_USE_IMPORTED_TARGETS 
 
56
#        If this variable is set to TRUE, FindQt4.cmake will create imported
 
57
#        library targets for the various Qt libraries and set the 
 
58
#        library variables like QT_QTCORE_LIBRARY to point at these imported
 
59
#        targets instead of the library file on disk. This provides much better 
 
60
#        handling of the release and debug versions of the Qt libraries and is 
 
61
#       also always backwards compatible, except for the case that dependencies
 
62
#       of libraries are exported, these will then also list the names of the 
 
63
#       imported targets as dependency and not the file location on disk. This
 
64
#       is much more flexible, but requires that FindQt4.cmake is executed before
 
65
#       such an exported dependency file is processed.
 
66
#
55
67
# There are also some files that need processing by some Qt tools such as moc
56
68
# and uic.  Listed below are macros that may be used to process those files.
57
69
#  
362
374
ENDIF(QT_QT_LIBRARY)
363
375
 
364
376
 
365
 
IF (QT4_QMAKE_FOUND)
 
377
IF (QT4_QMAKE_FOUND  AND  Qt4::QtCore)
366
378
   # Check already done in this cmake run, nothing more to do
367
379
   RETURN()
368
 
ENDIF (QT4_QMAKE_FOUND)
 
380
ENDIF (QT4_QMAKE_FOUND  AND  Qt4::QtCore)
369
381
 
370
382
# check that QT_NO_DEBUG is defined for release configurations
371
383
MACRO(QT_CHECK_FLAG_EXISTS FLAG VAR DOC)
892
904
  #
893
905
  ############################################
894
906
 
895
 
  MACRO (_QT4_ADJUST_LIB_VARS basename)
896
 
#    message(STATUS "Adjusting ${basename}, release: -${QT_${basename}_LIBRARY_RELEASE}- debug: -${QT_${basename}_LIBRARY_DEBUG}-")
 
907
  # On OSX when Qt is found as framework, never use the imported targets for now, since 
 
908
  # in this case the handling of the framework directory currently does not work correctly.
 
909
  IF(QT_USE_FRAMEWORKS)
 
910
    SET(QT_USE_IMPORTED_TARGETS FALSE)
 
911
  ENDIF(QT_USE_FRAMEWORKS)
 
912
 
 
913
 
 
914
  MACRO (_QT4_ADJUST_LIB_VARS _camelCaseBasename)
 
915
 
 
916
    STRING(TOUPPER "${_camelCaseBasename}" basename)
 
917
 
 
918
    # The name of the imported targets, i.e. the prefix "Qt4::" must not change,
 
919
    # since it is stored in EXPORT-files as name of a required library. If the name would change
 
920
    # here, this would lead to the imported Qt4-library targets not being resolved by cmake anymore.
897
921
    IF (QT_${basename}_LIBRARY_RELEASE OR QT_${basename}_LIBRARY_DEBUG)
898
 
      ADD_LIBRARY(Qt4__${basename} SHARED IMPORTED )
899
 
 
900
 
      IF(WIN32)
901
 
        SET(_QT4_LIBRARY_PROPERTY_NAME IMPLIB)
902
 
      ELSE(WIN32)
903
 
        SET(_QT4_LIBRARY_PROPERTY_NAME LOCATION)
904
 
      ENDIF(WIN32)
905
 
 
906
 
 
907
 
      IF (QT_${basename}_LIBRARY_RELEASE)
908
 
        SET_PROPERTY(TARGET Qt4__${basename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
909
 
        SET_PROPERTY(TARGET Qt4__${basename}        PROPERTY IMPORTED_${_QT4_LIBRARY_PROPERTY_NAME}_RELEASE "${QT_${basename}_LIBRARY_RELEASE}" )
910
 
#        message(STATUS "Setting IMPORTED_LOCATION_RELEASE to -${QT_${basename}_LIBRARY_RELEASE}-")
911
 
      ENDIF (QT_${basename}_LIBRARY_RELEASE)
912
 
 
913
 
      IF (QT_${basename}_LIBRARY_DEBUG)
914
 
        SET_PROPERTY(TARGET Qt4__${basename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
915
 
        SET_PROPERTY(TARGET Qt4__${basename}        PROPERTY IMPORTED_${_QT4_LIBRARY_PROPERTY_NAME}_DEBUG "${QT_${basename}_LIBRARY_DEBUG}" )
916
 
 
917
 
#       message(STATUS "Setting IMPORTED_LOCATION_DEBUG to -${QT_${basename}_LIBRARY_DEBUG}-")
918
 
 
919
 
        SET_PROPERTY(TARGET Qt4__${basename} PROPERTY MAP_IMPORTED_CONFIG_PROFILE DEBUG)
920
 
        SET_PROPERTY(TARGET Qt4__${basename} PROPERTY MAP_IMPORTED_CONFIG_DEBUGFULL DEBUG)
921
 
      ENDIF (QT_${basename}_LIBRARY_DEBUG)
922
 
 
923
 
      SET(QT_${basename}_LIBRARY       Qt4__${basename} )
924
 
      SET(QT_${basename}_LIBRARIES     Qt4__${basename} )
925
 
 
926
 
      IF (QT_${basename}_LIBRARY)
927
 
        SET(QT_${basename}_FOUND 1)
928
 
      ENDIF (QT_${basename}_LIBRARY)
 
922
 
 
923
      IF(NOT TARGET Qt4::${_camelCaseBasename})
 
924
        ADD_LIBRARY(Qt4::${_camelCaseBasename} UNKNOWN IMPORTED )
 
925
 
 
926
        IF (QT_${basename}_LIBRARY_RELEASE)
 
927
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
 
928
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_RELEASE "${QT_${basename}_LIBRARY_RELEASE}" )
 
929
        ENDIF (QT_${basename}_LIBRARY_RELEASE)
 
930
 
 
931
        IF (QT_${basename}_LIBRARY_DEBUG)
 
932
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
 
933
          SET_PROPERTY(TARGET Qt4::${_camelCaseBasename}        PROPERTY IMPORTED_LOCATION_DEBUG "${QT_${basename}_LIBRARY_DEBUG}" )
 
934
        ENDIF (QT_${basename}_LIBRARY_DEBUG)
 
935
      ENDIF(NOT TARGET Qt4::${_camelCaseBasename})
 
936
 
 
937
      # If QT_USE_IMPORTED_TARGETS is enabled, the QT_QTFOO_LIBRARY variables are set to point at these
 
938
      # imported targets. This works better in general, and is also in almost all cases fully
 
939
      # backward compatible. The only issue is when a project A which had this enabled then exports its 
 
940
      # libraries via export or EXPORT_LIBRARY_DEPENDENCIES(). In this case the libraries from project
 
941
      # A will depend on the imported Qt targets, and the names of these imported targets will be stored
 
942
      # in the dependency files on disk. This means when a project B then uses project A, these imported
 
943
      # targets must be created again, otherwise e.g. "Qt4__QtCore" will be interpreted as name of a 
 
944
      # library file on disk, and not as a target, and linking will fail:
 
945
      IF(QT_USE_IMPORTED_TARGETS)
 
946
          SET(QT_${basename}_LIBRARY       Qt4::${_camelCaseBasename} )
 
947
          SET(QT_${basename}_LIBRARIES     Qt4::${_camelCaseBasename} )
 
948
      ELSE(QT_USE_IMPORTED_TARGETS)
 
949
 
 
950
        # if the release- as well as the debug-version of the library have been found:
 
951
        IF (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE)
 
952
          # if the generator supports configuration types then set
 
953
          # optimized and debug libraries, or if the CMAKE_BUILD_TYPE has a value
 
954
          IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
 
955
            SET(QT_${basename}_LIBRARY       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
 
956
          ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
 
957
            # if there are no configuration types and CMAKE_BUILD_TYPE has no value
 
958
            # then just use the release libraries
 
959
            SET(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE} )
 
960
          ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
 
961
          SET(QT_${basename}_LIBRARIES       optimized ${QT_${basename}_LIBRARY_RELEASE} debug ${QT_${basename}_LIBRARY_DEBUG})
 
962
        ENDIF (QT_${basename}_LIBRARY_DEBUG AND QT_${basename}_LIBRARY_RELEASE)
 
963
 
 
964
        # if only the release version was found, set the debug variable also to the release version
 
965
        IF (QT_${basename}_LIBRARY_RELEASE AND NOT QT_${basename}_LIBRARY_DEBUG)
 
966
          SET(QT_${basename}_LIBRARY_DEBUG ${QT_${basename}_LIBRARY_RELEASE})
 
967
          SET(QT_${basename}_LIBRARY       ${QT_${basename}_LIBRARY_RELEASE})
 
968
          SET(QT_${basename}_LIBRARIES     ${QT_${basename}_LIBRARY_RELEASE})
 
969
        ENDIF (QT_${basename}_LIBRARY_RELEASE AND NOT QT_${basename}_LIBRARY_DEBUG)
 
970
 
 
971
        # if only the debug version was found, set the release variable also to the debug version
 
972
        IF (QT_${basename}_LIBRARY_DEBUG AND NOT QT_${basename}_LIBRARY_RELEASE)
 
973
          SET(QT_${basename}_LIBRARY_RELEASE ${QT_${basename}_LIBRARY_DEBUG})
 
974
          SET(QT_${basename}_LIBRARY         ${QT_${basename}_LIBRARY_DEBUG})
 
975
          SET(QT_${basename}_LIBRARIES       ${QT_${basename}_LIBRARY_DEBUG})
 
976
        ENDIF (QT_${basename}_LIBRARY_DEBUG AND NOT QT_${basename}_LIBRARY_RELEASE)
 
977
 
 
978
        # put the value in the cache:
 
979
        SET(QT_${basename}_LIBRARY ${QT_${basename}_LIBRARY} CACHE STRING "The Qt ${basename} library" FORCE)
 
980
 
 
981
      ENDIF(QT_USE_IMPORTED_TARGETS)
 
982
 
 
983
#message(STATUS "QT_${basename}_LIBRARY: ${QT_${basename}_LIBRARY}")
 
984
 
 
985
      SET(QT_${basename}_FOUND 1)
929
986
 
930
987
    ENDIF (QT_${basename}_LIBRARY_RELEASE OR QT_${basename}_LIBRARY_DEBUG)
931
988
 
941
998
 
942
999
  # Set QT_xyz_LIBRARY variable and add 
943
1000
  # library include path to QT_INCLUDES
944
 
  _QT4_ADJUST_LIB_VARS(QTCORE)
945
 
  _QT4_ADJUST_LIB_VARS(QTGUI)
946
 
  _QT4_ADJUST_LIB_VARS(QT3SUPPORT)
947
 
  _QT4_ADJUST_LIB_VARS(QTASSISTANT)
948
 
  _QT4_ADJUST_LIB_VARS(QTASSISTANTCLIENT)
949
 
  _QT4_ADJUST_LIB_VARS(QTCLUCENE)
950
 
  _QT4_ADJUST_LIB_VARS(QTDBUS)
951
 
  _QT4_ADJUST_LIB_VARS(QTDESIGNER)
952
 
  _QT4_ADJUST_LIB_VARS(QTDESIGNERCOMPONENTS)
953
 
  _QT4_ADJUST_LIB_VARS(QTHELP)
954
 
  _QT4_ADJUST_LIB_VARS(QTMULTIMEDIA)
955
 
  _QT4_ADJUST_LIB_VARS(QTNETWORK)
956
 
  _QT4_ADJUST_LIB_VARS(QTNSPLUGIN)
957
 
  _QT4_ADJUST_LIB_VARS(QTOPENGL)
958
 
  _QT4_ADJUST_LIB_VARS(QTSCRIPT)
959
 
  _QT4_ADJUST_LIB_VARS(QTSCRIPTTOOLS)
960
 
  _QT4_ADJUST_LIB_VARS(QTSQL)
961
 
  _QT4_ADJUST_LIB_VARS(QTSVG)
962
 
  _QT4_ADJUST_LIB_VARS(QTTEST)
963
 
  _QT4_ADJUST_LIB_VARS(QTUITOOLS)
964
 
  _QT4_ADJUST_LIB_VARS(QTWEBKIT)
965
 
  _QT4_ADJUST_LIB_VARS(QTXML)
966
 
  _QT4_ADJUST_LIB_VARS(QTXMLPATTERNS)
967
 
  _QT4_ADJUST_LIB_VARS(PHONON)
 
1001
  _QT4_ADJUST_LIB_VARS(QtCore)
 
1002
  _QT4_ADJUST_LIB_VARS(QtGui)
 
1003
  _QT4_ADJUST_LIB_VARS(Qt3Support)
 
1004
  _QT4_ADJUST_LIB_VARS(QtAssistant)
 
1005
  _QT4_ADJUST_LIB_VARS(QtAssistantClient)
 
1006
  _QT4_ADJUST_LIB_VARS(QtCLucene)
 
1007
  _QT4_ADJUST_LIB_VARS(QtDBus)
 
1008
  _QT4_ADJUST_LIB_VARS(QtDesigner)
 
1009
  _QT4_ADJUST_LIB_VARS(QtDesignerComponents)
 
1010
  _QT4_ADJUST_LIB_VARS(QtHelp)
 
1011
  _QT4_ADJUST_LIB_VARS(QtMultimedia)
 
1012
  _QT4_ADJUST_LIB_VARS(QtNetwork)
 
1013
  _QT4_ADJUST_LIB_VARS(QtNsPlugin)
 
1014
  _QT4_ADJUST_LIB_VARS(QtOpenGL)
 
1015
  _QT4_ADJUST_LIB_VARS(QtScript)
 
1016
  _QT4_ADJUST_LIB_VARS(QtScriptTools)
 
1017
  _QT4_ADJUST_LIB_VARS(QtSql)
 
1018
  _QT4_ADJUST_LIB_VARS(QtSvg)
 
1019
  _QT4_ADJUST_LIB_VARS(QtTest)
 
1020
  _QT4_ADJUST_LIB_VARS(QtUiTools)
 
1021
  _QT4_ADJUST_LIB_VARS(QtWebKit)
 
1022
  _QT4_ADJUST_LIB_VARS(QtXml)
 
1023
  _QT4_ADJUST_LIB_VARS(QtXmlPatterns)
 
1024
  _QT4_ADJUST_LIB_VARS(phonon)
968
1025
 
969
1026
  # platform dependent libraries
970
1027
  IF(Q_WS_X11)
971
 
    _QT4_ADJUST_LIB_VARS(QTMOTIF)
 
1028
    _QT4_ADJUST_LIB_VARS(QtMotif)
972
1029
  ENDIF(Q_WS_X11)
973
1030
  IF(WIN32)
974
 
    _QT4_ADJUST_LIB_VARS(QTMAIN)
975
 
    _QT4_ADJUST_LIB_VARS(QAXSERVER)
976
 
    _QT4_ADJUST_LIB_VARS(QAXCONTAINER)
 
1031
    _QT4_ADJUST_LIB_VARS(qtmain)
 
1032
    _QT4_ADJUST_LIB_VARS(QAxServer)
 
1033
    _QT4_ADJUST_LIB_VARS(QAxContainer)
977
1034
  ENDIF(WIN32)
978
1035
 
979
1036
  # If Qt is installed as a framework, we need to add QT_QTCORE_LIBRARY here (which
1003
1060
    SET(QT_DBUSXML2CPP_EXECUTABLE NOTFOUND)
1004
1061
    SET(QT_LUPDATE_EXECUTABLE NOTFOUND)
1005
1062
    SET(QT_LRELEASE_EXECUTABLE NOTFOUND)
 
1063
    SET(QT_LCONVERT_EXECUTABLE NOTFOUND)
1006
1064
    SET(QT_QCOLLECTIONGENERATOR_EXECUTABLE NOTFOUND)
1007
1065
    SET(QT_DESIGNER_EXECUTABLE NOTFOUND)
1008
1066
    SET(QT_LINGUIST_EXECUTABLE NOTFOUND)