-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
312 lines (275 loc) · 9.09 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#############################################################
# sources
set(QGIS_3D_SRCS
qgs3d.cpp
qgs3daxis.cpp
qgs3daxissettings.cpp
qgsaabb.cpp
qgsabstract3dengine.cpp
qgsabstractvectorlayer3drenderer.cpp
qgs3danimationsettings.cpp
qgs3dexportobject.cpp
qgs3dmapexportsettings.cpp
qgs3dmapscene.cpp
qgs3dmapsettings.cpp
qgs3dsceneexporter.cpp
qgs3dutils.cpp
qgscameracontroller.cpp
qgscamerapose.cpp
qgsfeature3dhandler_p.cpp
qgsimagetexture.cpp
qgslayoutitem3dmap.cpp
qgsoffscreen3dengine.cpp
qgsraycastingutils_p.cpp
qgsrulebased3drenderer.cpp
qgsrulebasedchunkloader_p.cpp
qgstessellatedpolygongeometry.cpp
qgstilingscheme.cpp
qgsvectorlayer3drenderer.cpp
qgsvectorlayerchunkloader_p.cpp
qgsmeshlayer3drenderer.cpp
qgswindow3dengine.cpp
qgsskyboxentity.cpp
qgsskyboxsettings.cpp
qgsshadowrenderingframegraph.cpp
qgspostprocessingentity.cpp
qgsrenderpassquad.cpp
qgsambientocclusionrenderentity.cpp
qgsambientocclusionblurentity.cpp
qgspreviewquad.cpp
qgsshadowsettings.cpp
qgscolorramptexture.cpp
qgsrubberband3d.cpp
qgsambientocclusionsettings.cpp
qgspointcloudlayer3drenderer.cpp
qgspointcloudlayerchunkloader_p.cpp
qgsvirtualpointcloudentity_p.cpp
chunks/qgschunkboundsentity_p.cpp
chunks/qgschunkedentity_p.cpp
chunks/qgschunklist_p.cpp
chunks/qgschunkloader_p.cpp
chunks/qgschunknode_p.cpp
chunks/qgschunkqueuejob_p.cpp
lights/qgsdirectionallightsettings.cpp
lights/qgslightsource.cpp
lights/qgspointlightsettings.cpp
materials/qgsabstractmaterialsettings.cpp
materials/qgsgoochmaterialsettings.cpp
materials/qgsmaterialregistry.cpp
materials/qgsnullmaterialsettings.cpp
materials/qgsphongmaterialsettings.cpp
materials/qgsphongtexturedmaterialsettings.cpp
materials/qgssimplelinematerialsettings.cpp
processing/qgs3dalgorithms.cpp
processing/qgsalgorithmtessellate.cpp
symbols/qgsbillboardgeometry.cpp
symbols/qgsline3dsymbol.cpp
symbols/qgsline3dsymbol_p.cpp
symbols/qgslinematerial_p.cpp
symbols/qgslinevertexdata_p.cpp
symbols/qgsmesh3dsymbol.cpp
symbols/qgsmesh3dsymbol_p.cpp
symbols/qgspoint3dbillboardmaterial.cpp
symbols/qgspoint3dsymbol.cpp
symbols/qgspoint3dsymbol_p.cpp
symbols/qgspolygon3dsymbol.cpp
symbols/qgspolygon3dsymbol_p.cpp
symbols/qgspointcloud3dsymbol.cpp
symbols/qgspointcloud3dsymbol_p.cpp
terrain/qgsdemterraingenerator.cpp
terrain/qgsdemterraintilegeometry_p.cpp
terrain/qgsdemterraintileloader_p.cpp
terrain/qgsflatterraingenerator.cpp
terrain/qgsonlineterraingenerator.cpp
terrain/qgsterraindownloader.cpp
terrain/qgsterrainentity_p.cpp
terrain/qgsterraingenerator.cpp
terrain/qgsterraintexturegenerator_p.cpp
terrain/qgsterraintextureimage_p.cpp
terrain/qgsterraintileloader_p.cpp
mesh/qgsmesh3dgeometry_p.cpp
mesh/qgsmesh3dentity_p.cpp
mesh/qgsmesh3dmaterial_p.cpp
mesh/qgsmeshterraingenerator.cpp
)
set(QGIS_3D_HDRS
processing/qgs3dalgorithms.h
qgs3d.h
qgs3danimationsettings.h
qgs3daxis.h
qgs3daxissettings.h
qgs3dmapscene.h
qgs3dmapsettings.h
qgs3dsceneexporter.h
qgs3dtypes.h
qgs3dutils.h
qgsaabb.h
qgsabstract3dengine.h
qgsabstractvectorlayer3drenderer.h
qgscameracontroller.h
qgscamerapose.h
qgslayoutitem3dmap.h
qgsmeshlayer3drenderer.h
qgsoffscreen3dengine.h
qgsrulebased3drenderer.h
qgstessellatedpolygongeometry.h
qgstilingscheme.h
qgsvectorlayer3drenderer.h
qgswindow3dengine.h
qgsskyboxentity.h
qgsskyboxsettings.h
qgsshadowrenderingframegraph.h
qgspostprocessingentity.h
qgspreviewquad.h
qgsshadowsettings.h
qgspointcloudlayer3drenderer.h
qgsrenderpassquad.h
qgsambientocclusionrenderentity.h
qgsambientocclusionblurentity.h
qgsambientocclusionsettings.h
lights/qgsdirectionallightsettings.h
lights/qgslightsource.h
lights/qgspointlightsettings.h
materials/qgsabstractmaterialsettings.h
materials/qgsgoochmaterialsettings.h
materials/qgsmaterialregistry.h
materials/qgsnullmaterialsettings.h
materials/qgsphongmaterialsettings.h
materials/qgsphongtexturedmaterialsettings.h
materials/qgssimplelinematerialsettings.h
symbols/qgsbillboardgeometry.h
symbols/qgsline3dsymbol.h
symbols/qgsmesh3dsymbol.h
symbols/qgspoint3dbillboardmaterial.h
symbols/qgspoint3dsymbol.h
symbols/qgspolygon3dsymbol.h
symbols/qgspointcloud3dsymbol.h
terrain/qgsdemterraingenerator.h
terrain/qgsflatterraingenerator.h
terrain/qgsonlineterraingenerator.h
terrain/qgsterraindownloader.h
terrain/qgsterraingenerator.h
terrain/qgsterraintileloader_p.h
chunks/qgschunkloader_p.h
chunks/qgschunkqueuejob_p.h
mesh/qgsmeshterraingenerator.h
)
set(QGIS_3D_PRIVATE_HDRS
qgsrulebasedchunkloader_p.h
qgsvectorlayerchunkloader_p.h
qgspointcloudlayerchunkloader_p.h
qgsvirtualpointcloudentity_p.h
qgs3dmapsceneentity_p.h
chunks/qgschunkboundsentity_p.h
chunks/qgschunkedentity_p.h
chunks/qgschunklist_p.h
chunks/qgschunknode_p.h
symbols/qgsline3dsymbol_p.h
symbols/qgslinematerial_p.h
symbols/qgslinevertexdata_p.h
symbols/qgsmesh3dsymbol_p.h
symbols/qgspoint3dsymbol_p.h
symbols/qgspolygon3dsymbol_p.h
symbols/qgspointcloud3dsymbol_p.h
terrain/qgsdemterraintilegeometry_p.h
terrain/qgsdemterraintileloader_p.h
terrain/qgsterrainentity_p.h
terrain/qgsterraintexturegenerator_p.h
terrain/qgsterraintextureimage_p.h
terrain/qgsterraintileentity_p.h
mesh/qgsmesh3dentity_p.h
mesh/qgsmesh3dgeometry_p.h
mesh/qgsmesh3dmaterial_p.h
qgscolorramptexture.h
)
set (QGIS_3D_RCCS shaders.qrc ../../resources/3d/textures/textures.qrc)
#############################################################
# qgis_3d library
add_library(qgis_3d SHARED ${QGIS_3D_SRCS} ${QGIS_3D_HDRS} ${QGIS_3D_RCCS} ${QGIS_3D_PRIVATE_HDRS})
# require c++17
target_compile_features(qgis_3d PRIVATE cxx_std_17)
if (BUILD_WITH_QT6)
target_include_directories(qgis_3d SYSTEM PUBLIC
${QT6_3DEXTRA_INCLUDE_DIR}
)
else()
target_include_directories(qgis_3d SYSTEM PUBLIC
${QT5_3DEXTRA_INCLUDE_DIR}
)
endif()
target_include_directories(qgis_3d PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/chunks
${CMAKE_CURRENT_SOURCE_DIR}/lights
${CMAKE_CURRENT_SOURCE_DIR}/materials
${CMAKE_CURRENT_SOURCE_DIR}/mesh
${CMAKE_CURRENT_SOURCE_DIR}/processing
${CMAKE_CURRENT_SOURCE_DIR}/shaders
${CMAKE_CURRENT_SOURCE_DIR}/symbols
${CMAKE_CURRENT_SOURCE_DIR}/terrain
${CMAKE_BINARY_DIR}/src/3d
${CMAKE_SOURCE_DIR}/external/delaunator-cpp
)
if (BUILD_WITH_QT6)
target_link_libraries(qgis_3d Qt6::3DCore Qt6::3DRender Qt6::3DInput Qt6::3DLogic Qt6::3DExtras)
else()
target_link_libraries(qgis_3d Qt5::3DCore Qt5::3DRender Qt5::3DInput Qt5::3DLogic Qt5::3DExtras)
endif()
GENERATE_EXPORT_HEADER(
qgis_3d
BASE_NAME 3D
EXPORT_FILE_NAME qgis_3d.h
)
set(QGIS_3D_HDRS ${QGIS_3D_HDRS} ${CMAKE_CURRENT_BINARY_DIR}/qgis_3d.h)
if(NOT APPLE OR NOT QGIS_MACAPP_FRAMEWORK)
install(FILES ${QGIS_3D_HDRS} DESTINATION ${QGIS_INCLUDE_DIR})
else()
set_target_properties(qgis_3d PROPERTIES
# no moc headers, messes up PROPERTIES syntax
CLEAN_DIRECT_OUTPUT 1
FRAMEWORK 1
FRAMEWORK_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}"
MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_SOURCE_DIR}/mac/framework.info.plist.in"
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${COMPLETE_VERSION}
MACOSX_FRAMEWORK_IDENTIFIER org.qgis.qgis3_3d
BUILD_WITH_INSTALL_RPATH TRUE
PUBLIC_HEADER "${QGIS_3D_HDRS}"
LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}"
)
# generated export header does not get copied with PUBLIC_HEADER files
add_custom_command(TARGET qgis_3d
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy qgis_3d.h
"${QGIS_OUTPUT_DIRECTORY}/${QGIS_LIB_SUBDIR}/qgis_3d.framework/Headers"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS qgis_3d.h
)
endif()
#generate unversioned libs for android
if (NOT ANDROID)
set_target_properties(qgis_3d PROPERTIES
VERSION ${COMPLETE_VERSION}
SOVERSION ${COMPLETE_VERSION}
)
endif()
target_link_libraries(qgis_3d qgis_core)
# clang-tidy
if(CLANG_TIDY_EXE)
set_target_properties(
qgis_3d PROPERTIES
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
)
endif()
# install
install(TARGETS qgis_3d
RUNTIME DESTINATION ${QGIS_BIN_DIR}
LIBRARY DESTINATION ${QGIS_LIB_DIR}
ARCHIVE DESTINATION ${QGIS_LIB_DIR}
FRAMEWORK DESTINATION ${QGIS_FW_SUBDIR}
PUBLIC_HEADER DESTINATION ${QGIS_INCLUDE_DIR})
# Mac dev frameworks
if (APPLE AND QGIS_MACAPP_INSTALL_DEV)
install(TARGETS qgis_3d FRAMEWORK DESTINATION ${QGIS_MACAPP_DEV_PREFIX})
install(CODE "execute_process(COMMAND install_name_tool -id \"${QGIS_MACAPP_DEV_PREFIX}/qgis_3d.framework/Versions/${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}/qgis_3d\" \"$ENV{DESTDIR}${QGIS_MACAPP_DEV_PREFIX}/qgis_3d.framework/qgis_3d\")")
install(CODE "execute_process(COMMAND install_name_tool -change \"${CMAKE_INSTALL_NAME_DIR}/qgis_core.framework/Versions/${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}/qgis_core\" \"${QGIS_MACAPP_DEV_PREFIX}/qgis_core.framework/Versions/${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}/qgis_core\" \"$ENV{DESTDIR}${QGIS_MACAPP_DEV_PREFIX}/qgis_3d.framework/qgis_3d\")")
endif()