# 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 ) 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 SettingsDialog.cpp Logging.cpp DatasetDimension.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::WebEngineWidgets Qt6::WebEngineQuick ${VTK_LIBRARIES} ads::qt6advanceddocking qt6keychain nlohmann_json::nlohmann_json geopro_core # Phase 1:ColorScale 上色 geopro_data # Phase 2:本地样本仓储(对象树 / 网格 / 色阶) geopro_net # Phase 3:登录(验证码 + RSA + login2) geopro_render # Phase 4:render 层(Scene / GridContourActor / 相机预设) geopro_controller # Phase 5:导航编排(WorkbenchNavController) ) # Qwt(二维科学图表;源码存在时由根 CMake 定义 qwt 目标)。 # cmake/qwt.cmake 已加 QWT_MOC_INCLUDE=1,Qwt 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}) # 崩溃 minidump:DbgHelp(Windows 自带)提供 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 $ $ 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 "$/../plugins/${_pl}" "$/${_pl}") endforeach() # ── Qt WebEngine 运行期部署(地图页签需)────────────────────────────────── # WebEngine 子进程 QtWebEngineProcess.exe(Chromium 渲染进程宿主)须与 exe 同目录或在 PATH; # 其依赖 resources/*.pak + icudtl.dat + v8 快照,以及 qtwebengine_locales/*.pak。dev-build 不跑 # windeployqt,故显式拷贝。WebEngine DLL(Qt6WebEngineCore/Widgets/Quick、WebChannel、Positioning、 # Qml、Quick、QuickWidgets 等)由上方 TARGET_RUNTIME_DLLS 步随链接依赖自动拷贝。 set(_qt_bin "$") add_custom_command(TARGET geopro_desktop POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_qt_bin}/QtWebEngineProcess.exe" "$" COMMAND ${CMAKE_COMMAND} -E copy_directory "${_qt_bin}/../resources" "$/resources" COMMAND ${CMAKE_COMMAND} -E copy_directory "${_qt_bin}/../translations/qtwebengine_locales" "$/qtwebengine_locales") endif()