Mercurial > hg > orthanc-stone
annotate Resources/CMake/QtConfiguration.cmake @ 1145:4f99c7905f8d broker
mingw qt
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 12 Nov 2019 18:28:46 +0100 |
parents | b60d70e8b55c |
children | 5035354b1369 |
rev | line source |
---|---|
276
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
1 # Stone of Orthanc |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
2 # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
3 # Department, University Hospital of Liege, Belgium |
439 | 4 # Copyright (C) 2017-2019 Osimis S.A., Belgium |
276
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
5 # |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
6 # This program is free software: you can redistribute it and/or |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
7 # modify it under the terms of the GNU Affero General Public License |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
8 # as published by the Free Software Foundation, either version 3 of |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
9 # the License, or (at your option) any later version. |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
10 # |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
11 # This program is distributed in the hope that it will be useful, but |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
12 # WITHOUT ANY WARRANTY; without even the implied warranty of |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
14 # Affero General Public License for more details. |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
15 # |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
16 # You should have received a copy of the GNU Affero General Public License |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
18 |
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
19 |
365
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
20 set(CMAKE_AUTOMOC OFF) |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
21 set(CMAKE_AUTOUIC OFF) |
276
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
22 |
1145 | 23 |
24 ## Note that these set of macros MUST be defined as a "function()", | |
25 ## otherwise it fails | |
26 function(DEFINE_QT_MACROS) | |
1040 | 27 include(Qt4Macros) |
320
10d188d6e5cc
compatibility with Qt4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
28 |
1044
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
29 ## |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
30 ## This part is adapted from file "Qt4Macros.cmake" shipped with |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
31 ## CMake 3.5.1, released under the following license: |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
32 ## |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
33 ##============================================================================= |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
34 ## Copyright 2005-2009 Kitware, Inc. |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
35 ## |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
36 ## Distributed under the OSI-approved BSD License (the "License"); |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
37 ## see accompanying file Copyright.txt for details. |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
38 ## |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
39 ## This software is distributed WITHOUT ANY WARRANTY; without even the |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
40 ## implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
41 ## See the License for more information. |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
42 ##============================================================================= |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
43 ## |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
44 macro (ORTHANC_QT_WRAP_UI outfiles) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
45 QT4_EXTRACT_OPTIONS(ui_files ui_options ui_target ${ARGN}) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
46 foreach (it ${ui_files}) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
47 get_filename_component(outfile ${it} NAME_WE) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
48 get_filename_component(infile ${it} ABSOLUTE) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
49 set(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.h) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
50 add_custom_command(OUTPUT ${outfile} |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
51 COMMAND ${QT_UIC_EXECUTABLE} |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
52 ARGS ${ui_options} -o ${outfile} ${infile} |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
53 MAIN_DEPENDENCY ${infile} VERBATIM) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
54 set(${outfiles} ${${outfiles}} ${outfile}) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
55 endforeach () |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
56 endmacro () |
365
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
57 |
1044
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
58 macro (ORTHANC_QT_WRAP_CPP outfiles ) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
59 QT4_GET_MOC_FLAGS(moc_flags) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
60 QT4_EXTRACT_OPTIONS(moc_files moc_options moc_target ${ARGN}) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
61 foreach (it ${moc_files}) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
62 get_filename_component(outfile ${it} NAME_WE) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
63 get_filename_component(infile ${it} ABSOLUTE) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
64 set(outfile ${CMAKE_CURRENT_BINARY_DIR}/moc_${outfile}.cxx) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
65 add_custom_command(OUTPUT ${outfile} |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
66 COMMAND ${QT_MOC_EXECUTABLE} |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
67 ARGS ${infile} "${moc_flags}" -o ${outfile} |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
68 MAIN_DEPENDENCY ${infile} VERBATIM) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
69 set(${outfiles} ${${outfiles}} ${outfile}) |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
70 endforeach () |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
71 endmacro () |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
72 ## |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
73 ## End of "Qt4Macros.cmake" adaptation. |
b60d70e8b55c
compatibility macros for LSB and Qt
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1041
diff
changeset
|
74 ## |
1145 | 75 endfunction() |
76 | |
77 | |
78 if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase") | |
79 # Linux Standard Base version 5 ships Qt 4.2.3 | |
80 DEFINE_QT_MACROS() | |
81 | |
82 # The script "LinuxStandardBaseUic.py" is just a wrapper around the | |
83 # "uic" compiler from LSB that does not support the "<?xml ...?>" | |
84 # header that is automatically added by Qt Creator | |
85 set(QT_UIC_EXECUTABLE ${CMAKE_CURRENT_LIST_DIR}/LinuxStandardBaseUic.py) | |
86 | |
87 set(QT_MOC_EXECUTABLE ${LSB_PATH}/bin/moc) | |
88 | |
89 include_directories( | |
90 ${LSB_PATH}/include/QtCore | |
91 ${LSB_PATH}/include/QtGui | |
92 ${LSB_PATH}/include/QtOpenGL | |
93 ) | |
94 | |
95 link_libraries(QtCore QtGui QtOpenGL) | |
96 | |
97 elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |
98 DEFINE_QT_MACROS() | |
99 | |
100 include_directories(${QT5_INSTALL_ROOT}/include) | |
101 link_directories(${QT5_INSTALL_ROOT}/lib) | |
102 | |
103 set(QT_UIC_EXECUTABLE ${QT5_INSTALL_ROOT}/bin/uic) | |
104 set(QT_MOC_EXECUTABLE ${QT5_INSTALL_ROOT}/bin/moc) | |
105 | |
106 include_directories( | |
107 ${QT5_INSTALL_ROOT}/include/QtCore | |
108 ${QT5_INSTALL_ROOT}/include/QtGui | |
109 ${QT5_INSTALL_ROOT}/include/QtOpenGL | |
110 ${QT5_INSTALL_ROOT}/include/QtWidgets | |
111 ) | |
112 | |
113 link_libraries(Qt5Core Qt5Gui Qt5OpenGL Qt5Widgets) | |
114 | |
115 file(COPY | |
116 ${QT5_INSTALL_ROOT}/bin/Qt5Core.dll | |
117 ${QT5_INSTALL_ROOT}/bin/Qt5Gui.dll | |
118 ${QT5_INSTALL_ROOT}/bin/Qt5OpenGL.dll | |
119 ${QT5_INSTALL_ROOT}/bin/Qt5Widgets.dll | |
120 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) | |
121 | |
122 file(COPY | |
123 ${QT5_INSTALL_ROOT}/plugins/platforms/qwindows.dll | |
124 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/platforms) | |
1040 | 125 |
126 else() | |
1145 | 127 # Not using Windows, not using Linux Standard Base, |
1040 | 128 # Find the QtWidgets library |
129 find_package(Qt5Widgets QUIET) | |
130 | |
131 if (Qt5Widgets_FOUND) | |
132 message("Qt5 has been detected") | |
133 find_package(Qt5Core REQUIRED) | |
134 link_libraries( | |
135 Qt5::Widgets | |
136 Qt5::Core | |
137 ) | |
138 | |
139 if (ENABLE_OPENGL) | |
140 find_package(Qt5OpenGL REQUIRED) | |
141 link_libraries( | |
142 Qt5::OpenGL | |
143 ) | |
144 endif() | |
145 | |
146 # Create aliases for the CMake commands | |
147 macro(ORTHANC_QT_WRAP_UI) | |
148 QT5_WRAP_UI(${ARGN}) | |
149 endmacro() | |
150 | |
151 macro(ORTHANC_QT_WRAP_CPP) | |
152 QT5_WRAP_CPP(${ARGN}) | |
153 endmacro() | |
154 | |
155 else() | |
156 message("Qt5 has not been found, trying with Qt4") | |
157 find_package(Qt4 REQUIRED QtGui) | |
158 link_libraries( | |
159 Qt4::QtGui | |
160 ) | |
161 | |
162 if (ENABLE_OPENGL) | |
163 find_package(Qt4 REQUIRED QtOpenGL) | |
164 link_libraries( | |
165 Qt4::QtOpenGL | |
166 ) | |
167 endif() | |
168 | |
169 # Create aliases for the CMake commands | |
170 macro(ORTHANC_QT_WRAP_UI) | |
171 QT4_WRAP_UI(${ARGN}) | |
172 endmacro() | |
173 | |
174 macro(ORTHANC_QT_WRAP_CPP) | |
175 QT4_WRAP_CPP(${ARGN}) | |
176 endmacro() | |
177 endif() | |
320
10d188d6e5cc
compatibility with Qt4
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
292
diff
changeset
|
178 endif() |
276
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
179 |
1028 | 180 |
181 if (ENABLE_STONE_DEPRECATED) | |
182 list(APPEND QT_SOURCES | |
1040 | 183 ${ORTHANC_STONE_ROOT}/Applications/Qt/QCairoWidget.cpp |
184 ${ORTHANC_STONE_ROOT}/Applications/Qt/QStoneMainWindow.cpp | |
1028 | 185 ${ORTHANC_STONE_ROOT}/Applications/Qt/QtStoneApplicationRunner.cpp |
186 ) | |
187 | |
188 ORTHANC_QT_WRAP_CPP(QT_SOURCES | |
1040 | 189 ${ORTHANC_STONE_ROOT}/Applications/Qt/QCairoWidget.h |
1028 | 190 ${ORTHANC_STONE_ROOT}/Applications/Qt/QStoneMainWindow.h |
191 ) | |
192 endif() | |
193 | |
365
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
194 |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
195 # NB: Including CMAKE_CURRENT_BINARY_DIR is mandatory, as the CMake |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
196 # macros for Qt will put their result in that directory, which cannot |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
197 # be changed. |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
198 # https://stackoverflow.com/a/4016784/881731 |
276
5de5699ad570
first display in QCairoWidget; no mouse interaction yet
am@osimis.io
parents:
274
diff
changeset
|
199 |
365
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
200 include_directories( |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
201 ${ORTHANC_STONE_ROOT}/Applications/Qt/ |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
202 ${CMAKE_CURRENT_BINARY_DIR} |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
203 ) |
ef31240a73f6
no automatic call to moc and uic, CircleMeasureTracker using Orthanc fonts
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
320
diff
changeset
|
204 |