Fast DDS Monitor Windows x64 从源码编译安装完全教程 文章目录1. 概述核心功能与其他工具的关系2. 相关资源3. Fast DDS Monitor 是什么架构原理4. 环境准备4.1 系统要求4.2 VS2022 环境脚本5. 编译 Fast DDS基础依赖5.1 安装 vcpkg 和 Fast DDS关键路径6. 编译 Qt6 全模块6.1 下载源码清华镜像6.2 编译顺序第 1 步编译 qtbase第 2 步编译 qtshadertools第 3 步编译 qtdeclarative含 Qml/Quick/QuickControls2第 4 步编译 qtcharts必须在 qtdeclarative 之后7. 编译 Fast DDS Statistics Backend7.1 克隆源码7.2 编译安装8. 编译 Fast DDS Monitor8.1 获取源码8.2 编译8.3 运行9. 常见问题与修复Q1: 程序崩溃退出码 -1Q2: 编译错误 module Clipboard is not installedQ3: 编译错误 module QtCharts is not installedQ4: Cannot open: file:///resources/images/... 错误Q5: GitHub 克隆超时10. 创建独立运行包10.1 最终目录结构11. 使用指南11.1 启动与连接11.2 界面布局11.3 DDS 实体发现11.4 统计图表附录编译耗时参考1. 概述Fast DDS Monitor是 eProsima 为 Fast DDS 开发的图形化监控工具基于Qt6 Quick (QML)框架构建。它可以实时发现、监控和分析 DDS 网络中的所有实体DomainParticipants、Topics、Writers、Readers 等并以图表形式展示通信统计数据。核心功能网络发现— 自动发现同一域中的 DomainParticipants、Topics、Endpoints实时统计— 以折线图、柱状图展示延迟、吞吐量、数据样本数等统计指标层次结构视图— 按物理架构Host - Process和逻辑架构Domain - Topic组织显示告警系统— 可配置阈值告警监控数据异常数据导出— 支持 CSV 格式导出统计数据图形化界面— 基于 Qt Quick 的现代化 UI多标签页管理与其他工具的关系工具类型用途Fast DDS SpyCLI 工具命令行监控 DDS 网络流量Fast DDS MonitorGUI 工具图形化 DDS 网络监控与分析Shapes DemoGUI 演示展示 DDS 发布/订阅通信机制附编译好的Fast DDS Monitor和Fast DDS Spy工具下载地址https://download.csdn.net/download/qq8864/92923224通过工具方便理解DDS原理。2. 相关资源项目仓库地址版本Fast DDS Monitorhttps://github.com/eProsima/Fast-DDS-Monitorv4.1.0Fast DDS Statistics Backendhttps://github.com/eProsima/Fast-DDS-statistics-backendv2.5.0Fast DDShttps://github.com/eProsima/Fast-DDSv3.6.1Qthttps://www.qt.io/6.8.33. Fast DDS Monitor 是什么架构原理Fast DDS Monitor 基于Fast DDS Statistics Backend库该库封装了 Fast DDS 的统计模块数据收集 API。Monitor 通过 Backend 库订阅 DDS 统计 Topic获取各实体的通信指标。技术栈C 核心逻辑 — Fast DDS, Statistics Backend, Qt6 C APIQML 前端 — Qt Quick, Qt Quick Controls 2, Qt Charts通信协议 — RTPS (Real-Time Publish-Subscribe) 协议4. 环境准备4.1 系统要求Windows 10/11 x64Visual Studio 2022 含 C 桌面开发工作负载Git足够磁盘空间约 10-15 GB4.2 VS2022 环境脚本创建 vs2022_env.batecho off call C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat x64 set PATHC:\path\to\cmake\bin;C:\path\to\ninja;%%PATH%% cd /d C:\fastdds %%*5. 编译 Fast DDS基础依赖5.1 安装 vcpkg 和 Fast DDScd C:\fastdds git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg install fastdds:x64-windows这会自动安装fastcdr序列化库foonathan_memory内存管理tinyxml2XML 解析OpenSSL加密支持关键路径组件路径Fast DDS 头文件vcpkg\installed\x64-windows\includeFast DDS DLLvcpkg\installed\x64-windows\binCMake 配置vcpkg\installed\x64-windows\share\fastdds6. 编译 Qt6 全模块Fast DDS Monitor 需要以下 Qt6 模块Qt6 Core, Gui, Widgets - 来自 qtbaseQt6 Qml, Quick, QuickControls2 - 来自 qtdeclarativeQt6 Charts - 来自 qtchartsQt6 ShaderTools - 来自 qtshadertoolsQt Quick 编译必需6.1 下载源码清华镜像cd C:\fastdds\downloads # qtbase (Core/Gui/Widgets) curl -L -o qtbase-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtbase-everywhere-src-6.8.3.zip # qtdeclarative (Qml/Quick) - 约 80MB curl -L -o qtdeclarative-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtdeclarative-everywhere-src-6.8.3.zip # qtshadertools curl -L -o qtshadertools-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtshadertools-everywhere-src-6.8.3.zip # qtcharts curl -L -o qtcharts-6.8.3.zip https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/6.8/6.8.3/submodules/qtcharts-everywhere-src-6.8.3.zip6.2 编译顺序第 1 步编译 qtbasecd C:\fastdds tar -xf downloads\qtbase-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtbase-everywhere-src-6.8.3 -B qt6\build ^ -DCMAKE_BUILD_TYPERelease -DCMAKE_INSTALL_PREFIXinstall ^ -DFEATURE_dbusOFF -DFEATURE_sqlOFF -DFEATURE_testlibOFF ^ -DFEATURE_concurrentOFF -DBUILD_SHARED_LIBSON cmake --build qt6\build --parallel :: ~7 分钟 cmake --install qt6\build --prefix install第 2 步编译 qtshadertoolstar -xf downloads\qtshadertools-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtshadertools-everywhere-src-6.8.3 -B qt6\build_qtshadertools ^ -DCMAKE_BUILD_TYPERelease -DCMAKE_PREFIX_PATHinstall -DCMAKE_INSTALL_PREFIXinstall cmake --build qt6\build_qtshadertools --parallel :: ~1 分钟 cmake --install qt6\build_qtshadertools --prefix install第 3 步编译 qtdeclarative含 Qml/Quick/QuickControls2tar -xf downloads\qtdeclarative-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtdeclarative-everywhere-src-6.8.3 -B qt6\build_qtdeclarative ^ -DCMAKE_BUILD_TYPERelease -DCMAKE_PREFIX_PATHinstall -DCMAKE_INSTALL_PREFIXinstall cmake --build qt6\build_qtdeclarative --parallel :: ~8 分钟 cmake --install qt6\build_qtdeclarative --prefix install第 4 步编译 qtcharts必须在 qtdeclarative 之后重要qtcharts 必须在 qtdeclarative 之后编译才能正确生成 Qt6ChartsQml QML 模块。tar -xf downloads\qtcharts-6.8.3.zip -C qt6 cmake -G Ninja -S qt6\qtcharts-everywhere-src-6.8.3 -B qt6\build_qtcharts ^ -DCMAKE_BUILD_TYPERelease -DCMAKE_PREFIX_PATHinstall -DCMAKE_INSTALL_PREFIXinstall cmake --build qt6\build_qtcharts --parallel :: ~1.5 分钟 cmake --install qt6\build_qtcharts --prefix install7. 编译 Fast DDS Statistics BackendStatistics Backend 是 Monitor 的底层依赖库封装了 Fast DDS 统计数据的收集逻辑。7.1 克隆源码powershell cd C:\fastdds git clone --depth 1 -b v2.5.0 https://github.com/eProsima/Fast-DDS-statistics-backend.git7.2 编译安装set CMAKE_PREFIX_PATHC:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows cmake -G Ninja -S Fast-DDS-statistics-backend -B build\statistics_backend ^ -DCMAKE_BUILD_TYPERelease ^ -DCMAKE_PREFIX_PATH%%CMAKE_PREFIX_PATH%% ^ -DCMAKE_INSTALL_PREFIXinstall cmake --build build\statistics_backend --parallel :: ~30 秒 cmake --install build\statistics_backend --prefix install8. 编译 Fast DDS Monitor8.1 获取源码cd C:\fastdds git clone --depth 1 -b v4.1.0 https://github.com/eProsima/Fast-DDS-Monitor.git8.2 编译set CMAKE_PREFIX_PATHC:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows cmake -G Ninja -S Fast-DDS-Monitor -B build\fastdds_monitor ^ -DCMAKE_BUILD_TYPERelease ^ -DCMAKE_PREFIX_PATH%%CMAKE_PREFIX_PATH%% cmake --build build\fastdds_monitor --parallel :: ~30 秒 cmake --install build\fastdds_monitor --prefix install8.3 运行cd C:\fastdds\install\bin fastdds_monitor.exe首次启动时会出现主窗口点击Start按钮进入监控界面。9. 常见问题与修复Q1: 程序崩溃退出码 -1原因VC 运行时 DLL 或 Fast DDS DLL 不在运行目录或 PATH 中。解决从 vcpkg\installed\x64-windows\bin 复制以下 DLL 到运行目录fastdds-3.6.dll, fastcdr-2.3.dll, foonathan_memory-0.7.4.dlltinyxml2.dll, libssl-3-x64.dll, libcrypto-3-x64.dll或者安装 Visual C RedistributableQ2: 编译错误 “module Clipboard is not installed”原因该 Monitor 使用 qmlRegisterType 注册 C 类型到 QML但在某些 Qt6 版本中 QML 引擎无法解析。解决方案源码级修改 qml/TabLayout.qml移除 import Clipboard 1.0将 ClipboardHandler 替换为 Item修改 src/Engine.cpp添加 include通过 setContextProperty 注入修改 src/main.cpp注释掉 qmlRegisterType 调用// Engine.cpp 中修改#includefastdds_monitor/io/ClipboardHandler.h// 在 enable() 方法中添加rootContext()-setContextProperty(clipboardHandler,newClipboardHandler(this));Q3: 编译错误 “module QtCharts is not installed”原因QtCharts 在编译时没有生成 QML 模块Qt6ChartsQml.dll。解决确保 qtcharts 在 qtdeclarative 之后编译或者在安装了 QML 后重新编译。cmake --build qt6\build_qtcharts --parallel cmake --install qt6\build_qtcharts --prefix installQ4: “Cannot open: file:///resources/images/…” 错误原因使用文件系统加载 QML 时qrc:/resources/… 路径无法解析。解决使用 QRC 编译方式默认方式或复制 resources/ 目录到 QML 文件所在目录。Q5: GitHub 克隆超时解决使用镜像https://gitclone.com/github.com/eProsima/…使用代理git config --global http.proxy http://proxy:port多次重试10. 创建独立运行包10.1 最终目录结构FastDDSMonitor/ ├── run.bat # 一键启动 ├── fastdds_monitor.exe # 主程序 ├── Qt6Core.dll # Qt6 运行库 ├── Qt6Gui.dll ├── Qt6Qml.dll ├── Qt6Quick.dll ├── Qt6Charts.dll ├── fastdds-3.6.dll # Fast DDS 运行库 ├── fastdds_statistics_backend-2.5.dll ├── fastcdr-2.3.dll ├── foonathan_memory-0.7.4.dll ├── tinyxml2.dll ├── libssl-3-x64.dll ├── libcrypto-3-x64.dll ├── msvcp140.dll # VC 运行库 ├── vcruntime140.dll ├── plugins/ # Qt 插件 │ ├── platforms/qwindows.dll │ ├── styles/qmodernwindowsstyle.dll │ ├── imageformats/qjpeg.dll │ └── ... └── qml/ # QML 模块 ├── QtQuick/ ├── QtCharts/ ├── QtQml/ └── ...11. 使用指南11.1 启动与连接启动 Monitor - 双击 run.bat 或直接运行 fastdds_monitor.exe初始界面 - 显示 Main Start View包含产品信息和 Start 按钮开始监控 - 点击 Start 按钮弹出监控配置对话框选择域 - 默认监听 Domain ID 0可根据需要修改11.2 界面布局-------------------------------------------------------- | Menu Bar (文件/视图/工具/帮助) | ------------------------------------------------------- | | Tab Bar: DDS | 统计 | 告警 | 日志 | | Icon |-------------------------------------------------| | Bar | 主内容区域根据 Tab 切换不同视图 | | | - DDS 视图: 树状结构展示 Participants/Topics | | | - 统计视图: 实时折线图/柱状图 | | | - 告警视图: 告警列表和配置 | | | - 日志视图: 日志输出 | ------------------------------------------------------- | Status Bar (连接状态/统计概览) | --------------------------------------------------------11.3 DDS 实体发现Monitor 会自动发现网络中的 DDS 实体按两种视图组织物理视图 (Physical View):Host主机名- User用户- Process进程 PID- Participant - Writer/Reader逻辑视图 (Logical View):Domain域 ID- Topic主题名- Writer/Reader11.4 统计图表支持以下统计指标的实时图表展示Latency: 端到端延迟Throughput: 吞吐量 (bytes/s)Packet Loss: 丢包率Sample Count: 数据样本数Data Size: 数据大小Reliability: 可靠性统计附录编译耗时参考组件耗时Qt6 qtbase (Core/Gui/Widgets)~7 分钟Qt6 qtshadertools~1 分钟Qt6 qtdeclarative (Qml/Quick)~8 分钟Qt6 qtcharts~1.5 分钟Fast DDS Statistics Backend~30 秒Fast DDS Monitor~30 秒总计~18 分钟以上耗时基于 12 核 CPU NVMe SSD 测试使用 Ninja 并行编译。