]> SALOME platform Git repositories - modules/shaper.git/blob - CMakeCommon/FindSalomeQt5.cmake
Salome HOME
Issue #2561: CEA 2018-1 Cut
[modules/shaper.git] / CMakeCommon / FindSalomeQt5.cmake
1 # Copyright (C) 2013-2015  CEA/DEN, EDF R&D, OPEN CASCADE\r
2 #\r
3 # This library is free software; you can redistribute it and/or\r
4 # modify it under the terms of the GNU Lesser General Public\r
5 # License as published by the Free Software Foundation; either\r
6 # version 2.1 of the License, or (at your option) any later version.\r
7 #\r
8 # This library is distributed in the hope that it will be useful,\r
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of\r
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
11 # Lesser General Public License for more details.\r
12 #\r
13 # You should have received a copy of the GNU Lesser General Public\r
14 # License along with this library; if not, write to the Free Software\r
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
16 #\r
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
18 #\r
19 # Author: Adrien Bruneton\r
20 #\r
21 \r
22 # Qt5 detection for Salome\r
23 #\r
24 #  !! Please read the generic detection procedure in SalomeMacros.cmake !!\r
25 #\r
26 \r
27 # Qt5_FIND_COMPONENTS variable is set here to prevent ParaView to reset list of Qt5 modules,\r
28 # just to avoid extra dependencies\r
29 \r
30 SET(QT_INCLUDES)\r
31 SET(QT_DEFINITIONS)\r
32 SET(QT_LIBRARIES)\r
33 # Find Qt5Core to get Qt version\r
34 SET(Qt5_FIND_COMPONENTS QtCore)\r
35 SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(Qt5Core Qt5Core_INCLUDE_DIRS 1 ENVVAR QT5_ROOT_DIR)\r
36 IF(Qt5Core_FOUND)\r
37   LIST(APPEND QT_INCLUDES    ${Qt5Core_INCLUDE_DIRS})\r
38   LIST(APPEND QT_DEFINITIONS ${Qt5Core_DEFINITIONS})\r
39   LIST(APPEND QT_LIBRARIES   ${Qt5Core_LIBRARIES})\r
40   SET(QT_VERSION "${Qt5Core_VERSION}")\r
41 ENDIF()\r
42 \r
43 SET(Qt5_FIND_COMPONENTS Gui Widgets Network Xml OpenGL PrintSupport Help Test Sql Sensors Positioning Quick Qml Multimedia MultimediaWidgets WebChannel UiTools)\r
44 \r
45 IF ("${QT_VERSION}" VERSION_LESS "5.6.0")\r
46   LIST(APPEND Qt5_FIND_COMPONENTS WebKit WebKitWidgets)\r
47 ELSE()\r
48   LIST(APPEND Qt5_OPTIONAL_COMPONENTS WebEngine WebEngineWidgets)\r
49 ENDIF()\r
50 \r
51 IF(NOT WIN32)\r
52   LIST(APPEND Qt5_FIND_COMPONENTS X11Extras)\r
53 ENDIF()\r
54 \r
55 FOREACH(_Qt5_COMPONENT_ ${Qt5_FIND_COMPONENTS} ${Qt5_OPTIONAL_COMPONENTS})\r
56   SET(_Qt5_COMPONENT Qt5${_Qt5_COMPONENT_})\r
57   LIST(FIND Qt5_OPTIONAL_COMPONENTS ${_Qt5_COMPONENT_} idx)\r
58   IF(${idx} GREATER -1)\r
59    SET(Salome${_Qt5_COMPONENT}_FIND_QUIETLY TRUE)\r
60   ENDIF()\r
61   SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(${_Qt5_COMPONENT} ${_Qt5_COMPONENT}_INCLUDE_DIRS 1 ENVVAR QT5_ROOT_DIR)\r
62   LIST(APPEND QT_INCLUDES    ${${_Qt5_COMPONENT}_INCLUDE_DIRS})\r
63   LIST(APPEND QT_DEFINITIONS ${${_Qt5_COMPONENT}_DEFINITIONS})\r
64   LIST(APPEND QT_LIBRARIES   ${${_Qt5_COMPONENT}_LIBRARIES})\r
65 ENDFOREACH()\r
66 \r
67 FIND_PACKAGE(Qt5LinguistTools)\r
68 GET_TARGET_PROPERTY(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION)\r
69 MARK_AS_ADVANCED(QT_LRELEASE_EXECUTABLE)\r
70 \r
71 GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY)\r
72 MARK_AS_ADVANCED(QT_BINARY_DIR)\r
73 \r
74 # This is only needed to correctly detect Qt help generator tool, to workaround an error \r
75 # coming from ParaView detection procedure\r
76 FIND_PROGRAM(QT_HELP_GENERATOR\r
77     qhelpgenerator\r
78     PATHS "${QT_BINARY_DIR}"\r
79     NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH\r
80     DOC "qhelpgenerator used to compile Qt help project files")\r
81 MARK_AS_ADVANCED(QT_HELP_GENERATOR)\r
82 \r
83 IF(Qt5Core_FOUND) \r
84   SALOME_ACCUMULATE_HEADERS(QT_INCLUDES)\r
85   SALOME_ACCUMULATE_ENVIRONMENT(PATH ${LINGUIST_PATH})\r
86   SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH ${Qt5Core_LIBRARIES})\r
87   GET_FILENAME_COMPONENT(Qt5_DIR ${Qt5Core_DIR} PATH)\r
88   FILE(TO_NATIVE_PATH "${Qt5_DIR}/Qt5" Qt5_DIR)\r
89   SET(SalomeQt5_COMPONENTS ${Qt5_FIND_COMPONENTS})\r
90   MESSAGE(STATUS "Qt version is ${QT_VERSION}")\r
91 ENDIF()\r