Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/CMakeLists.txt
3196 views
1
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
2
SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
3
PROJECT(ElmerGUI CXX C)
4
SET(APPLICATION_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/netgen/libsrc/interface")
5
6
IF(APPLE)
7
include(cmake/Modules/FindOpenCasCade.cmake)
8
# add_subdirectory(cmake/Modules)
9
ENDIF()
10
11
SET(WITH_PYTHONQT FALSE CACHE BOOL "ElmerGUI: Use PythonQt for scripting in post processor?")
12
SET(WITH_OCC FALSE CACHE BOOL "ElmerGUI: Use OpenCASCADE for importing CAD files? Needs VTK.")
13
SET(WITH_MATC FALSE CACHE BOOL "ElmerGUI: Use MATC for internal operations in postprocessing?")
14
SET(WITH_PARAVIEW FALSE CACHE BOOL "ElmerGUI: Use ParaView for postprocessing?")
15
SET(WITH_VTK FALSE CACHE BOOL "ElmerGUI: Use VTK for postprocessing?")
16
SET(WITH_QWT TRUE CACHE BOOL "ElmerGUI: Use QWT for convergence monitor?")
17
SET(WITH_ELMERGUILOGGER FALSE CACHE BOOL "ElmerGUI: Include ElmerGUIlogger")
18
19
IF( NOT WITH_QT6)
20
find_package(Qt5 COMPONENTS Widgets)
21
if (Qt5_FOUND)
22
set(WITH_QT5 TRUE CACHE BOOL "ElmerGUI: Use Qt5")
23
endif()
24
ENDIF()
25
26
IF(WITH_QT6)
27
MESSAGE(STATUS "------------------------------------------------")
28
IF(WIN32)
29
MESSAGE(STATUS "Qt6 Windows packaging")
30
SET(QT6_PKG_LIST Qt6OpenGL Qt6OpenGLWidgets Qt6Qml Qt6Xml Qt6Gui Qt6Core Qt6Svg Qt6Widgets Qt6PrintSupport)
31
ELSE()
32
MESSAGE(STATUS "Qt6 non-Windows packaging")
33
SET(QT6_PKG_LIST Qt6OpenGL Qt6Qml Qt6Xml Qt6Gui Qt6Core Qt6Svg Qt6PrintSupport Qt6OpenGLWidgets)
34
ENDIF()
35
FOREACH(_pkg ${QT6_PKG_LIST})
36
FIND_PACKAGE(${_pkg} PATHS ${QT6_PATH} REQUIRED)
37
ENDFOREACH()
38
39
ADD_DEFINITIONS(-DWITH_QT6)
40
MESSAGE(STATUS " [ElmerGUI] Qt6: " ${Qt6_FOUND})
41
MESSAGE(STATUS " [ElmerGUI] Qt6 Libraries: ${Qt6OpenGL_LIBRARIES} ${Qt6OpenGLWidgets_LIBRARIES} ${Qt6Qml_LIBRARIES} ${Qt6Xml_LIBRARIES} ${Qt6Gui_LIBRARIES} ${Qt6Core_LIBRARIES}")
42
MESSAGE(STATUS "------------------------------------------------")
43
set(WITH_QT5 FALSE CACHE BOOL "" FORCE)
44
ELSEIF(WITH_QT5)
45
MESSAGE(STATUS "------------------------------------------------")
46
IF(WIN32)
47
MESSAGE(STATUS "Qt5 Windows packaging")
48
SET(QT5_PKG_LIST Qt5OpenGL Qt5Xml Qt5Script Qt5Gui Qt5Core Qt5Svg Qt5Widgets Qt5PrintSupport)
49
ELSE()
50
MESSAGE(STATUS "Qt5 non-Windows packaging")
51
SET(QT5_PKG_LIST Qt5OpenGL Qt5Xml Qt5Script Qt5Gui Qt5Core Qt5Svg Qt5PrintSupport)
52
ENDIF()
53
FOREACH(_pkg ${QT5_PKG_LIST})
54
FIND_PACKAGE(${_pkg} PATHS ${QT5_PATH} REQUIRED)
55
ENDFOREACH()
56
ADD_DEFINITIONS(-DWITH_QT5)
57
MESSAGE(STATUS " [ElmerGUI] Qt5: " ${Qt5_FOUND})
58
MESSAGE(STATUS " [ElmerGUI] Qt5 Libraries: ${Qt5OpenGL_LIBRARIES} ${Qt5Xml_LIBRARIES} ${Qt5Script_LIBRARIES} ${Qt5Gui_LIBRARIES} ${Qt5Core_LIBRARIES}")
59
MESSAGE(STATUS "------------------------------------------------")
60
ELSE()
61
MESSAGE(STATUS "------------------------------------------------")
62
FIND_PACKAGE(Qt4 COMPONENTS QtOpenGL QtXml QtScript QtGui QtCore REQUIRED)
63
MESSAGE(STATUS " [ElmerGUI] Qt4: " ${Qt4_FOUND})
64
MESSAGE(STATUS " [ElmerGUI] Qt4_LIBRARIES: " ${Qt4_LIBRARY})
65
MESSAGE(STATUS "------------------------------------------------")
66
ENDIF()
67
68
IF(WITH_PYTHONQT)
69
IF(WITH_QT5 OR WITH_QT6)
70
MESSAGE(FATAL_ERROR "PythonQt is not supported for QT5 or QT6")
71
ENDIF()
72
ADD_DEFINITIONS(-DEG_PYTHONQT)
73
ADD_SUBDIRECTORY(PythonQt)
74
SET(APPLICATION_INCLUDE_DIRS "${APPLICATION_INCLUDE_DIRS};${CMAKE_CURRENT_SOURCE_DIR}/PythonQt/src")
75
ENDIF()
76
77
SET_DIRECTORY_PROPERTIES(Application INCLUDE_DIRECTORIES "${APPLICATION_INCLUDE_DIRS}")
78
79
IF(WITH_QWT)
80
ADD_DEFINITIONS(-DEG_QWT)
81
FIND_PACKAGE(Qwt REQUIRED)
82
# FIND_PATH(QWT_INCLUDE_DIR qwt.h)
83
# SET(QWT_INCLUDE_DIR "C:/msys64/mingw64/include/qwt-qt5")
84
# SET(QWT_LIBRARY "C:/msys64/mingw64/lib/libqwt-qt5.dll.a")
85
MESSAGE(STATUS " [ElmerGUI] Qwt: " ${Qwt_FOUND})
86
MESSAGE(STATUS " [ElmerGUI] QWT_LIBRARY: " ${QWT_LIBRARY})
87
MESSAGE(STATUS " [ElmerGUI] QWT_INCLUDE_DIR: " ${QWT_INCLUDE_DIR})
88
MESSAGE(STATUS "------------------------------------------------")
89
string(FIND "${QWT_LIBRARY}" "-qt6" QWT_QT_OUT)
90
if( (QWT_QT_OUT GREATER 0) AND (NOT WITH_QT6))
91
MESSAGE(WARNING " [ElmerGUI] Qt version mismatch with Qwt")
92
MESSAGE(STATUS "------------------------------------------------")
93
endif()
94
string(FIND "${QWT_LIBRARY}" "-qt5" QWT_QT_OUT)
95
if( (QWT_QT_OUT GREATER 0) AND (NOT WITH_QT5))
96
MESSAGE(WARNING " [ElmerGUI] Qt version mismatch with Qwt")
97
MESSAGE(STATUS "------------------------------------------------")
98
endif()
99
string(FIND "${QWT_LIBRARY}" "-qt4" QWT_QT_OUT)
100
if( (QWT_QT_OUT GREATER 0) AND (WITH_QT5 OR WITH_QT6))
101
MESSAGE(WARNING " [ElmerGUI] Qt version mismatch with Qwt")
102
MESSAGE(STATUS "------------------------------------------------")
103
endif()
104
ENDIF()
105
106
IF(WITH_OCC)
107
108
IF(NOT WITH_VTK)
109
SET(WITHOUT_VTKPOST TRUE)
110
ENDIF()
111
SET(WITH_VTK TRUE)
112
ADD_DEFINITIONS(-DEG_OCC)
113
114
FIND_PACKAGE(OpenCASCADE)
115
IF(OpenCASCADE_FOUND)
116
MESSAGE(STATUS " [ElmerGUI] OpenCASCADE: " ${OpenCASCADE_FOUND})
117
MESSAGE(STATUS " [ElmerGUI] OpenCASCADE_VERSION: " ${OpenCASCADE_VERSION})
118
MESSAGE(STATUS " [ElmerGUI] OpenCASCADE_INCLUDE_DIR: " ${OpenCASCADE_INCLUDE_DIR})
119
# only link to available libraries
120
SET(ELMER_USED_OCC_LIBS "TKernel;TKMath;TKG3d;TKG2d;TKBRep;TKSTEP;TKMesh;TKIGES;TKDEIGES;TKG2d;TKGeomBase;TKBool;TKBO;TKGeomAlgo;TKPrim;TKShHealing;TKSTEP209;TKSTEPAttr;TKSTEPBase;TKDESTEP;TKTopAlgo;TKXSBase")
121
SET(ELMER_AVAILABLE_OCC_LIBS "")
122
FOREACH(_lib IN LISTS ELMER_USED_OCC_LIBS)
123
LIST(FIND OpenCASCADE_LIBRARIES ${_lib} _index)
124
IF(NOT ${_index} EQUAL -1)
125
LIST(APPEND ELMER_AVAILABLE_OCC_LIBS ${_lib})
126
ENDIF()
127
ENDFOREACH()
128
SET(ELMER_OCC_LIBS "${ELMER_AVAILABLE_OCC_LIBS}" CACHE INTERNAL "")
129
MESSAGE(STATUS " [ElmerGUI] ELMER_OCC_LIBS: " "${ELMER_OCC_LIBS}")
130
MESSAGE(STATUS "------------------------------------------------")
131
ELSE()
132
FIND_PACKAGE(OCE REQUIRED)
133
MESSAGE(STATUS " [ElmerGUI] OCE: " ${OCE_FOUND})
134
MESSAGE(STATUS " [ElmerGUI] OCE_VERSION: " ${OCE_VERSION})
135
MESSAGE(STATUS " [ElmerGUI] OCE_INCLUDE_DIRS: " ${OCE_INCLUDE_DIRS})
136
SET(ELMER_OCC_LIBS "TKernel;TKMath;TKG3d;TKG2d;TKBRep;TKSTEP;TKMesh;TKIGES;TKG2d;TKGeomBase;TKBool;TKBO;TKGeomAlgo;TKPrim;TKShHealing;TKSTEP209;TKSTEPAttr;TKSTEPBase;TKTopAlgo;TKXSBase" CACHE INTERNAL "")
137
MESSAGE(STATUS " [ElmerGUI] ELMER_OCC_LIBS: " "${ELMER_OCC_LIBS}")
138
MESSAGE(STATUS "------------------------------------------------")
139
SET(OpenCASCADE_INCLUDE_DIR ${OCE_INCLUDE_DIRS} CACHE PATH "Include dir for OCCT or OCE")
140
ENDIF()
141
142
ENDIF()
143
144
IF(WITH_VTK)
145
FIND_PACKAGE(VTK REQUIRED)
146
147
INCLUDE(testVTKcapabilities)
148
149
MESSAGE(STATUS " [ElmerGUI] VTK version: " ${VTK_VERSION})
150
MESSAGE(STATUS " [ElmerGUI] VTK_LIBS: " "${VTK_LIBRARIES}")
151
MESSAGE(STATUS " [ElmerGUI] VTK_INCLUDE_DIRS: " "${VTK_INCLUDE_DIRS}")
152
MESSAGE(STATUS " [ElmerGUI] VTK_QT_VERSION: " ${VTK_QT_VERSION})
153
MESSAGE(STATUS "------------------------------------------------")
154
if((${VTK_QT_VERSION} EQUAL 6) AND (NOT WITH_QT6))
155
MESSAGE(WARNING " [ElmerGUI] Qt version mismatch with VTK_QT_VERSION")
156
MESSAGE(STATUS "------------------------------------------------")
157
elseif((${VTK_QT_VERSION} EQUAL 5) AND (NOT WITH_QT5))
158
MESSAGE(WARNING " [ElmerGUI] Qt version mismatch with VTK_QT_VERSION")
159
MESSAGE(STATUS "------------------------------------------------")
160
elseif((${VTK_QT_VERSION} EQUAL 4) AND (WITH_QT5 OR WITH_QT6))
161
MESSAGE(WARNING " [ElmerGUI] Qt version mismatch with VTK_QT_VERSION")
162
MESSAGE(STATUS "------------------------------------------------")
163
endif()
164
ENDIF()
165
166
IF(WITH_MATC)
167
ADD_DEFINITIONS(-DEG_MATC)
168
ADD_SUBDIRECTORY(matc)
169
MESSAGE(STATUS " [ElmerGUI] Compiling in matc")
170
MESSAGE(STATUS "------------------------------------------------")
171
ENDIF()
172
173
IF(WITH_PARAVIEW)
174
ADD_DEFINITIONS(-DEG_PARAVIEW)
175
ENDIF()
176
177
178
ADD_SUBDIRECTORY(netgen)
179
ADD_SUBDIRECTORY(Application)
180
181
182
IF(WIN32)
183
INCLUDE(cmake/windows_bundle.cmake)
184
ENDIF(WIN32)
185
186
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSES DESTINATION "share/ElmerGUI/license_texts" COMPONENT "elmergui")
187
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/GPL-2 DESTINATION "share/ElmerGUI/license_texts" COMPONENT "elmergui")
188
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/GPL_EXCEPTION DESTINATION "share/ElmerGUI/license_texts" COMPONENT "elmergui")
189
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/samples DESTINATION "share/ElmerGUI" COMPONENT "elmergui_samples")
190
191
192