geopro/src/app/CMakeLists.txt

141 lines
5.8 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# M1 demo 工作台:在 ADS 停靠的 QVTK 视图里渲染真实 ERT 网格剖面(#18
# 复用 spike S3 的 banded contour 管线 + Phase 1 core 的 ColorScale 上色。
find_package(VTK REQUIRED COMPONENTS
GUISupportQt
RenderingOpenGL2
RenderingVolumeOpenGL2
InteractionStyle
InteractionWidgets
FiltersGeometry
FiltersModeling
IOImage # vtkPNGWriter切片导出图片
)
find_package(nlohmann_json CONFIG REQUIRED)
find_package(Qt6 REQUIRED COMPONENTS Svg)
# trajectory 地图QWebEngineView + Leaflet + 天地图)实现于 TrajectoryMapView.{hpp,cpp} +
# resources/map/。WebEngine 硬依赖模块 Qt6WebChannel / Qt6Positioning 已补装,恢复 find_package/link/
# deploy 三处 + main.cpp 初始化DetailViewFactory 的 WebMap 分支切回 TrajectoryMapView。
find_package(Qt6 REQUIRED COMPONENTS WebEngineWidgets WebEngineQuick)
add_executable(geopro_desktop WIN32
main.cpp
Theme.cpp
TopBar.cpp
Glyphs.cpp
PanelHeader.cpp
Credential.cpp
login/LoginWindow.cpp
panels/AnomalyListPanel.cpp
panels/DatasetListPanel.cpp
panels/ObjectTreePanel.cpp
panels/DynamicFormView.cpp
panels/DynamicFormEditor.cpp
panels/ObjectAttrPanel.cpp
panels/DatasetAttrPanel.cpp
panels/ObjectExceptionPanel.cpp
panels/DescriptionPanel.cpp
panels/chart/RawDataChartView.cpp
panels/chart/GridDataChartView.cpp
panels/chart/DataTableView.cpp
panels/chart/TablePager.cpp
panels/chart/BarChartView.cpp
panels/chart/LineChartView.cpp
panels/chart/TrajectoryMapView.cpp
panels/chart/DetailViewFactory.cpp
resources/map/map.qrc
panels/chart/ChartTheme.cpp
panels/chart/ColorMapService.cpp
panels/chart/ColorBarWidget.cpp
panels/chart/ScatterPlotItem.cpp
panels/chart/ContourPlotItem.cpp
panels/chart/LivePanner.cpp
panels/chart/ScatterHoverTip.cpp
panels/columns/Column2DDataset.cpp
panels/columns/Column3DDataset.cpp
panels/columns/Column3DAnalysis.cpp
panels/columns/ColumnDrawer.cpp
panels/AnomalyTablePanel.cpp
panels/LoadingOverlay.cpp
panels/DatasetDetailPage.cpp
panels/DatasetDetailPanel.cpp
VtkSceneView.cpp
ProjectListDialog.cpp
ObjectFormDialog.cpp
ImportDatasetDialog.cpp
ExportDatasetDialog.cpp
AnomalySaveDialog.cpp
AnomalyPropertiesDialog.cpp
SettingsDialog.cpp
SliceExport.cpp
SlicePropertiesDialog.cpp
VolumeParamsDialog.cpp
VolumePropertiesDialog.cpp
Logging.cpp
DatasetDimension.cpp
TileBasemap.cpp)
target_include_directories(geopro_desktop PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
# QtKeychain 经 FetchContent 接入,头文件不随 target 传播,显式加源/构建目录(含生成的 export 头)。
target_include_directories(geopro_desktop PRIVATE ${qtkeychain_SOURCE_DIR} ${qtkeychain_BINARY_DIR})
target_link_libraries(geopro_desktop PRIVATE
Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Svg Qt6::Network
Qt6::WebEngineWidgets Qt6::WebEngineQuick
${VTK_LIBRARIES}
ads::qt6advanceddocking
qt6keychain
nlohmann_json::nlohmann_json
geopro_core # Phase 1ColorScale 上色
geopro_data # Phase 2本地样本仓储对象树 / 网格 / 色阶)
geopro_net # Phase 3登录验证码 + RSA + login2
geopro_render # Phase 4render 层Scene / GridContourActor / 相机预设)
geopro_controller # Phase 5导航编排WorkbenchNavController
)
# Qwt二维科学图表源码存在时由根 CMake 定义 qwt 目标)。
# cmake/qwt.cmake 已加 QWT_MOC_INCLUDE=1Qwt Q_OBJECT 类的 MOC 代码直接编译进各 .cpp.obj
# 标准按需链接可正确解析所有 MOC 符号(无需 /WHOLEARCHIVE
if(TARGET qwt)
target_link_libraries(geopro_desktop PRIVATE qwt)
endif()
vtk_module_autoinit(TARGETS geopro_desktop MODULES ${VTK_LIBRARIES})
# 崩溃 minidumpDbgHelpWindows 自带)提供 MiniDumpWriteDump。
if(WIN32)
target_link_libraries(geopro_desktop PRIVATE Dbghelp)
endif()
if(WIN32)
add_custom_command(TARGET geopro_desktop POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_RUNTIME_DLLS:geopro_desktop> $<TARGET_FILE_DIR:geopro_desktop>
COMMAND_EXPAND_LISTS)
# 运行期 Qt 插件部署platforms 必需imageformats/iconengines 供 ElaWidgetTools 的 SVG 图标;
# styles 备用。从链接的 Qt6::Core 推导 Qt 安装的 plugins 目录,拷到 exe 旁windeployqt 会被
# ADS 的非 Qt DLL 依赖卡住,故改为显式 copy
foreach(_pl platforms styles imageformats iconengines)
add_custom_command(TARGET geopro_desktop POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"$<TARGET_FILE_DIR:Qt6::Core>/../plugins/${_pl}"
"$<TARGET_FILE_DIR:geopro_desktop>/${_pl}")
endforeach()
# ── Qt WebEngine 运行期部署(地图页签需)──────────────────────────────────
# WebEngine 子进程 QtWebEngineProcess.exeChromium 渲染进程宿主)须与 exe 同目录或在 PATH
# 其依赖 resources/*.pak + icudtl.dat + v8 快照,以及 qtwebengine_locales/*.pak。dev-build 不跑
# windeployqt故显式拷贝。WebEngine DLLQt6WebEngineCore/Widgets/Quick、WebChannel、Positioning、
# Qml、Quick、QuickWidgets 等)由上方 TARGET_RUNTIME_DLLS 步随链接依赖自动拷贝。
set(_qt_bin "$<TARGET_FILE_DIR:Qt6::Core>")
add_custom_command(TARGET geopro_desktop POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${_qt_bin}/QtWebEngineProcess.exe" "$<TARGET_FILE_DIR:geopro_desktop>"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${_qt_bin}/../resources" "$<TARGET_FILE_DIR:geopro_desktop>/resources"
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${_qt_bin}/../translations/qtwebengine_locales"
"$<TARGET_FILE_DIR:geopro_desktop>/qtwebengine_locales")
endif()