173 lines
6.7 KiB
CMake
173 lines
6.7 KiB
CMake
# 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
|
||
FormKit.cpp
|
||
TopBar.cpp
|
||
ToastOverlay.cpp
|
||
Glyphs.cpp
|
||
PanelHeader.cpp
|
||
Credential.cpp
|
||
login/LoginWindow.cpp
|
||
panels/AnomalyListPanel.cpp
|
||
panels/DatasetListPanel.cpp
|
||
panels/ObjectTreePanel.cpp
|
||
panels/KeyValueView.cpp
|
||
panels/DynamicFormView.cpp
|
||
panels/DynamicFormEditor.cpp
|
||
panels/ObjectAttrPanel.cpp
|
||
panels/DatasetAttrPanel.cpp
|
||
panels/ObjectExceptionPanel.cpp
|
||
panels/DescriptionPanel.cpp
|
||
panels/QuillDelta.cpp
|
||
panels/chart/RawDataChartView.cpp
|
||
panels/chart/InversionFormDialog.cpp
|
||
panels/chart/ScatterDataOps.cpp
|
||
panels/chart/SaveAsDialog.cpp
|
||
panels/chart/ScatterFilterDialog.cpp
|
||
panels/chart/ScatterHistogram.cpp
|
||
panels/chart/RangeSlider.cpp
|
||
panels/chart/InversionProcessOps.cpp
|
||
panels/chart/GridWizardDialog.cpp
|
||
panels/chart/WhiteningDialog.cpp
|
||
panels/chart/FilterDialog.cpp
|
||
panels/chart/ExceptionDialog.cpp
|
||
panels/chart/ExceptionTextDialog.cpp
|
||
panels/chart/ExceptionDetailDialog.cpp
|
||
panels/chart/AutoAnnotationDialog.cpp
|
||
panels/chart/ContourSimplify.cpp
|
||
panels/chart/ContourHoverTip.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
|
||
resources/keys.qrc
|
||
resources/icons.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/chart/ChartPickGeometry.cpp
|
||
panels/chart/ScatterMarqueePicker.cpp
|
||
panels/chart/ContourDrawTool.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
|
||
ColorGradientDialog.cpp
|
||
ColorScaleConfigDialog.cpp
|
||
ColorScaleIO.cpp
|
||
ContourLevelDialog.cpp
|
||
ContourLevels.cpp
|
||
ContourLineDialog.cpp
|
||
GradientEditWidget.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 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
|
||
$<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.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 "$<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()
|