1# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2# file Copyright.txt or https://cmake.org/licensing for details.
3
4#[=======================================================================[.rst:
5UseQt4
6------
7
8Use Module for QT4
9
10Sets up C and C++ to use Qt 4.  It is assumed that :module:`FindQt` has
11already been loaded.  See :module:`FindQt` for information on how to load
12Qt 4 into your CMake project.
13#]=======================================================================]
14
15add_definitions(${QT_DEFINITIONS})
16set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>)
17
18if(QT_INCLUDE_DIRS_NO_SYSTEM)
19  include_directories(${QT_INCLUDE_DIR})
20else(QT_INCLUDE_DIRS_NO_SYSTEM)
21  include_directories(SYSTEM ${QT_INCLUDE_DIR})
22endif(QT_INCLUDE_DIRS_NO_SYSTEM)
23
24set(QT_LIBRARIES "")
25set(QT_LIBRARIES_PLUGINS "")
26
27if (QT_USE_QTMAIN)
28  if (Q_WS_WIN)
29    set(QT_LIBRARIES ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY})
30  endif ()
31endif ()
32
33if(QT_DONT_USE_QTGUI)
34  set(QT_USE_QTGUI 0)
35else()
36  set(QT_USE_QTGUI 1)
37endif()
38
39if(QT_DONT_USE_QTCORE)
40  set(QT_USE_QTCORE 0)
41else()
42  set(QT_USE_QTCORE 1)
43endif()
44
45if (QT_USE_QT3SUPPORT)
46  add_definitions(-DQT3_SUPPORT)
47endif ()
48
49# list dependent modules, so dependent libraries are added
50set(QT_QT3SUPPORT_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE)
51set(QT_QTSVG_MODULE_DEPENDS QTGUI QTCORE)
52set(QT_QTUITOOLS_MODULE_DEPENDS QTGUI QTXML QTCORE)
53set(QT_QTHELP_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE)
54if(QT_QTDBUS_FOUND)
55  set(QT_PHONON_MODULE_DEPENDS QTGUI QTDBUS QTCORE)
56else()
57  set(QT_PHONON_MODULE_DEPENDS QTGUI QTCORE)
58endif()
59set(QT_QTDBUS_MODULE_DEPENDS QTXML QTCORE)
60set(QT_QTXMLPATTERNS_MODULE_DEPENDS QTNETWORK QTCORE)
61set(QT_QAXCONTAINER_MODULE_DEPENDS QTGUI QTCORE)
62set(QT_QAXSERVER_MODULE_DEPENDS QTGUI QTCORE)
63set(QT_QTSCRIPTTOOLS_MODULE_DEPENDS QTGUI QTCORE)
64set(QT_QTWEBKIT_MODULE_DEPENDS QTXMLPATTERNS QTGUI QTCORE)
65set(QT_QTDECLARATIVE_MODULE_DEPENDS QTSCRIPT QTSVG QTSQL QTXMLPATTERNS QTGUI QTCORE)
66set(QT_QTMULTIMEDIA_MODULE_DEPENDS QTGUI QTCORE)
67set(QT_QTOPENGL_MODULE_DEPENDS QTGUI QTCORE)
68set(QT_QTSCRIPT_MODULE_DEPENDS QTCORE)
69set(QT_QTGUI_MODULE_DEPENDS QTCORE)
70set(QT_QTTEST_MODULE_DEPENDS QTCORE)
71set(QT_QTXML_MODULE_DEPENDS QTCORE)
72set(QT_QTSQL_MODULE_DEPENDS QTCORE)
73set(QT_QTNETWORK_MODULE_DEPENDS QTCORE)
74
75# Qt modules  (in order of dependence)
76foreach(module QT3SUPPORT QTOPENGL QTASSISTANT QTDESIGNER QTMOTIF QTNSPLUGIN
77               QAXSERVER QAXCONTAINER QTDECLARATIVE QTSCRIPT QTSVG QTUITOOLS QTHELP
78               QTWEBKIT PHONON QTSCRIPTTOOLS QTMULTIMEDIA QTXMLPATTERNS QTGUI QTTEST
79               QTDBUS QTXML QTSQL QTNETWORK QTCORE)
80
81  if (QT_USE_${module} OR QT_USE_${module}_DEPENDS)
82    if (QT_${module}_FOUND)
83      if(QT_USE_${module})
84        string(REPLACE "QT" "" qt_module_def "${module}")
85        add_definitions(-DQT_${qt_module_def}_LIB)
86        if(QT_INCLUDE_DIRS_NO_SYSTEM)
87          include_directories(${QT_${module}_INCLUDE_DIR})
88        else(QT_INCLUDE_DIRS_NO_SYSTEM)
89          include_directories(SYSTEM ${QT_${module}_INCLUDE_DIR})
90        endif(QT_INCLUDE_DIRS_NO_SYSTEM)
91      endif()
92      if(QT_USE_${module} OR QT_IS_STATIC)
93        set(QT_LIBRARIES ${QT_LIBRARIES} ${QT_${module}_LIBRARY})
94      endif()
95      set(QT_LIBRARIES_PLUGINS ${QT_LIBRARIES_PLUGINS} ${QT_${module}_PLUGINS})
96      if(QT_IS_STATIC)
97        set(QT_LIBRARIES ${QT_LIBRARIES} ${QT_${module}_LIB_DEPENDENCIES})
98      endif()
99      foreach(depend_module ${QT_${module}_MODULE_DEPENDS})
100        set(QT_USE_${depend_module}_DEPENDS 1)
101      endforeach()
102    else ()
103      message("Qt ${module} library not found.")
104    endif ()
105  endif ()
106
107endforeach()
108