Fast DDS Monitor Windows x64 从源码编译安装完全教程

文章目录

    • [1. 概述](#1. 概述)
    • [2. 相关资源](#2. 相关资源)
    • [3. Fast DDS Monitor 是什么?](#3. Fast DDS Monitor 是什么?)
    • [4. 环境准备](#4. 环境准备)
      • [4.1 系统要求](#4.1 系统要求)
      • [4.2 VS2022 环境脚本](#4.2 VS2022 环境脚本)
    • [5. 编译 Fast DDS(基础依赖)](#5. 编译 Fast DDS(基础依赖))
      • [5.1 安装 vcpkg 和 Fast DDS](#5.1 安装 vcpkg 和 Fast DDS)
      • 关键路径
    • [6. 编译 Qt6 全模块](#6. 编译 Qt6 全模块)
      • [6.1 下载源码(清华镜像)](#6.1 下载源码(清华镜像))
      • [6.2 编译顺序](#6.2 编译顺序)
        • [第 1 步:编译 qtbase](#第 1 步:编译 qtbase)
        • [第 2 步:编译 qtshadertools](#第 2 步:编译 qtshadertools)
        • [第 3 步:编译 qtdeclarative(含 Qml/Quick/QuickControls2)](#第 3 步:编译 qtdeclarative(含 Qml/Quick/QuickControls2))
        • [第 4 步:编译 qtcharts(必须在 qtdeclarative 之后!)](#第 4 步:编译 qtcharts(必须在 qtdeclarative 之后!))
    • [7. 编译 Fast DDS Statistics Backend](#7. 编译 Fast DDS Statistics Backend)
      • [7.1 克隆源码](#7.1 克隆源码)
      • [7.2 编译安装](#7.2 编译安装)
    • [8. 编译 Fast DDS Monitor](#8. 编译 Fast DDS Monitor)
      • [8.1 获取源码](#8.1 获取源码)
      • [8.2 编译](#8.2 编译)
      • [8.3 运行](#8.3 运行)
    • [9. 常见问题与修复](#9. 常见问题与修复)
      • [Q1: 程序崩溃,退出码 -1](#Q1: 程序崩溃,退出码 -1)
      • [Q2: 编译错误 "module Clipboard is not installed"](#Q2: 编译错误 "module Clipboard is not installed")
      • [Q3: 编译错误 "module QtCharts is not installed"](#Q3: 编译错误 "module QtCharts is not installed")
      • [Q4: "Cannot open: file:///resources/images/..." 错误](#Q4: "Cannot open: file:///resources/images/..." 错误)
      • [Q5: GitHub 克隆超时](#Q5: GitHub 克隆超时)
    • [10. 创建独立运行包](#10. 创建独立运行包)
      • [10.1 最终目录结构](#10.1 最终目录结构)
    • [11. 使用指南](#11. 使用指南)
      • [11.1 启动与连接](#11.1 启动与连接)
      • [11.2 界面布局](#11.2 界面布局)
      • [11.3 DDS 实体发现](#11.3 DDS 实体发现)
      • [11.4 统计图表](#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 Spy CLI 工具 命令行监控 DDS 网络流量
Fast DDS Monitor GUI 工具 图形化 DDS 网络监控与分析
Shapes Demo GUI 演示 展示 DDS 发布/订阅通信机制

附编译好的Fast DDS Monitor和Fast DDS Spy工具下载地址https://download.csdn.net/download/qq8864/92923224,通过工具方便理解DDS原理。

2. 相关资源

项目 仓库地址 版本
Fast DDS Monitor https://github.com/eProsima/Fast-DDS-Monitor v4.1.0
Fast DDS Statistics Backend https://github.com/eProsima/Fast-DDS-statistics-backend v2.5.0
Fast DDS https://github.com/eProsima/Fast-DDS v3.6.1
Qt https://www.qt.io/ 6.8.3

3. Fast DDS Monitor 是什么?

架构原理

Fast DDS Monitor 基于 Fast DDS Statistics Backend 库,该库封装了 Fast DDS 的统计模块数据收集 API。

Monitor 通过 Backend 库订阅 DDS 统计 Topic,获取各实体的通信指标。

技术栈:

  • C++ 核心逻辑 --- Fast DDS, Statistics Backend, Qt6 C++ API
  • QML 前端 --- Qt Quick, Qt Quick Controls 2, Qt Charts
  • 通信协议 --- RTPS (Real-Time Publish-Subscribe) 协议

4. 环境准备

4.1 系统要求

  • Windows 10/11 x64
  • Visual Studio 2022 含 C++ 桌面开发工作负载
  • Git
  • 足够磁盘空间(约 10-15 GB)

4.2 VS2022 环境脚本

创建 vs2022_env.bat:

复制代码
@echo off
call "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" x64
set PATH=C:\path\to\cmake\bin;C:\path\to\ninja;%%PATH%%
cd /d C:\fastdds
%%*

5. 编译 Fast DDS(基础依赖)

5.1 安装 vcpkg 和 Fast DDS

复制代码
cd C:\fastdds
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install fastdds:x64-windows

这会自动安装:

  • fastcdr(序列化库)
  • foonathan_memory(内存管理)
  • tinyxml2(XML 解析)
  • OpenSSL(加密支持)

关键路径

组件 路径
Fast DDS 头文件 vcpkg\installed\x64-windows\include
Fast DDS DLL vcpkg\installed\x64-windows\bin
CMake 配置 vcpkg\installed\x64-windows\share\fastdds

6. 编译 Qt6 全模块

Fast DDS Monitor 需要以下 Qt6 模块:

  • Qt6 Core, Gui, Widgets -> 来自 qtbase
  • Qt6 Qml, Quick, QuickControls2 -> 来自 qtdeclarative
  • Qt6 Charts -> 来自 qtcharts
  • Qt6 ShaderTools -> 来自 qtshadertools(Qt 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.zip

6.2 编译顺序

第 1 步:编译 qtbase
复制代码
cd 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_TYPE=Release -DCMAKE_INSTALL_PREFIX=install ^
    -DFEATURE_dbus=OFF -DFEATURE_sql=OFF -DFEATURE_testlib=OFF ^
    -DFEATURE_concurrent=OFF -DBUILD_SHARED_LIBS=ON

cmake --build qt6\build --parallel    :: ~7 分钟
cmake --install qt6\build --prefix install
第 2 步:编译 qtshadertools
复制代码
tar -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_TYPE=Release -DCMAKE_PREFIX_PATH=install -DCMAKE_INSTALL_PREFIX=install

cmake --build qt6\build_qtshadertools --parallel    :: ~1 分钟
cmake --install qt6\build_qtshadertools --prefix install
第 3 步:编译 qtdeclarative(含 Qml/Quick/QuickControls2)
复制代码
tar -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_TYPE=Release -DCMAKE_PREFIX_PATH=install -DCMAKE_INSTALL_PREFIX=install

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_TYPE=Release -DCMAKE_PREFIX_PATH=install -DCMAKE_INSTALL_PREFIX=install

cmake --build qt6\build_qtcharts --parallel    :: ~1.5 分钟
cmake --install qt6\build_qtcharts --prefix install

7. 编译 Fast DDS Statistics Backend

Statistics 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.git

7.2 编译安装

复制代码
set CMAKE_PREFIX_PATH=C:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows

cmake -G Ninja -S Fast-DDS-statistics-backend -B build\statistics_backend ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_PREFIX_PATH=%%CMAKE_PREFIX_PATH%% ^
    -DCMAKE_INSTALL_PREFIX=install

cmake --build build\statistics_backend --parallel    :: ~30 秒
cmake --install build\statistics_backend --prefix install

8. 编译 Fast DDS Monitor

8.1 获取源码

复制代码
cd C:\fastdds
git clone --depth 1 -b v4.1.0 https://github.com/eProsima/Fast-DDS-Monitor.git

8.2 编译

复制代码
set CMAKE_PREFIX_PATH=C:\fastdds\install;C:\fastdds\vcpkg\installed\x64-windows

cmake -G Ninja -S Fast-DDS-Monitor -B build\fastdds_monitor ^
    -DCMAKE_BUILD_TYPE=Release ^
    -DCMAKE_PREFIX_PATH=%%CMAKE_PREFIX_PATH%%

cmake --build build\fastdds_monitor --parallel    :: ~30 秒
cmake --install build\fastdds_monitor --prefix install

8.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.dll
  • tinyxml2.dll, libssl-3-x64.dll, libcrypto-3-x64.dll
  • 或者安装 Visual C++ Redistributable

Q2: 编译错误 "module Clipboard is not installed"

原因 :该 Monitor 使用 qmlRegisterType 注册 C++ 类型到 QML,但在某些 Qt6 版本中 QML 引擎无法解析。

解决方案(源码级)

  1. 修改 qml/TabLayout.qml,移除 import Clipboard 1.0,将 ClipboardHandler 替换为 Item
  2. 修改 src/Engine.cpp,添加 include,通过 setContextProperty 注入
  3. 修改 src/main.cpp,注释掉 qmlRegisterType 调用
cpp 复制代码
// Engine.cpp 中修改
#include <fastdds_monitor/io/ClipboardHandler.h>

// 在 enable() 方法中添加:
rootContext()->setContextProperty("clipboardHandler", new ClipboardHandler(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 install

Q4: "Cannot open: file:///resources/images/..." 错误

原因 :使用文件系统加载 QML 时,qrc:/resources/... 路径无法解析。

解决:使用 QRC 编译方式(默认方式),或复制 resources/ 目录到 QML 文件所在目录。

Q5: GitHub 克隆超时

解决


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 启动与连接

  1. 启动 Monitor - 双击 run.bat 或直接运行 fastdds_monitor.exe
  2. 初始界面 - 显示 Main Start View,包含产品信息和 Start 按钮
  3. 开始监控 - 点击 Start 按钮,弹出监控配置对话框
  4. 选择域 - 默认监听 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/Reader

11.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 并行编译。

相关推荐
慵懒的猫mi3 小时前
deepin 25部署x11vnc+xrdp,实现vnc和mstsc双重访问
linux·windows·开源软件·deepin
神仙别闹3 小时前
基于C语言 实现 Windows PE 文件解析
c语言·windows·microsoft
kebeiovo3 小时前
Codex在Windows安装配置指南
windows
daad7773 小时前
wsl2上的 gz sim 安装 gazebo
windows
霸道流氓气质4 小时前
Windows批处理脚本完整指南:可移植的交互式SpringBoot项目管理
windows·spring boot·后端
AI行业学习5 小时前
.NET Framework 3.5 SP1 完整离线包(2029.5.29)
开发语言·windows·.net
阿昭L5 小时前
调试CreateProcess
windows·进程·逆向工程·windows内核
AI行业学习6 小时前
.NET Framework 3.5 官方离线包下载+完整安装教程【2026.5.29】
windows·.net·notepad++
思麟呀6 小时前
C++工业级日志项目(七)日志器核心
linux·开发语言·c++·windows