源码构建与项目结构
本文面向需要从源码构建 RTKHUB 工具链、检查发布包内容或参与底层开发的读者。内容以主项目 README.md、CMakeLists.txt、Dockerfile 和工程目录为准。
主要平台Windows 10/11、Windows Server 2019+,推荐 Visual Studio 2022。
跨平台构建CMake 3.15+,Linux 当前以源码或 Docker 构建为主。
发布重点CMake 默认会把
public/ 前端资源嵌入 RTKHUB 可执行文件。构建环境
| 项目 | 要求 |
|---|---|
| 编译器 | 支持 C99 标准 |
| Windows IDE | Visual Studio 2022 或更高版本 |
| CMake | 3.15 或更高版本 |
| 数据库 | SQLite 内嵌,无需单独安装 |
| HTTP 服务 | CivetWeb 内嵌 |
| JSON | yyjson |
浏览器侧要求支持 ES6+ 和 Fetch API,推荐 Chrome 90+、Firefox 88+、Edge 90+ 或 Safari 14+。
Visual Studio 构建
主程序:
- 使用 Visual Studio 2022 打开主项目
rtkhub.sln。 - 选择
Debug x64或Release x64。 - 构建
rtkhub项目。
其他工具:
| 工具 | 工程 |
|---|---|
| STRHUB | strhub/strhub.sln |
| EPHUB | ephub/ephub.sln |
| RNX2RTKP | rnx2rtkp/rnx2rtkp.sln |
| RNX2RTCM | rnx2rtcm/rnx2rtcm.sln |
CMake 构建
cmake -S . -B build
cmake --build build --config Release
生成的可执行文件位于 bin/ 目录。默认构建会将 public/ 前端静态资源压缩后嵌入 rtkhub.exe,发布时不需要额外携带 public/ 目录。
CMake 选项
| 选项 | 默认值 | 说明 |
|---|---|---|
RTKHUB_EMBED_WEB_ASSETS | ON | 将 public/ 静态资源嵌入可执行文件 |
RTKHUB_OBFUSCATE_WEB_ASSETS | ON | 嵌入资源时压缩/混淆 HTML、CSS、JS |
开发调试前端资源时,可以关闭嵌入:
cmake -S . -B build -DRTKHUB_EMBED_WEB_ASSETS=OFF
cmake --build build --config Release
关闭后,程序会从磁盘 public/ 目录读取 Web 资源,适合边调试边刷新。
Docker 构建
主项目 Dockerfile 使用 Debian 13 slim 作为构建和运行基础镜像,安装 build-essential、cmake、python3、OpenBLAS/LAPACK 相关包后执行 CMake Release 构建。运行镜像暴露 5426,默认命令为:
["./rtkhub", "-nc", "-k", "conf/rtkhub.list"]
完整部署方式见 Docker 部署。
项目结构
rtkhub/
├── conf/ 网络与通道配置文件
├── database/ 运行时 SQLite 数据库
├── doc/ 用户手册
├── public/ Web 前端静态资源
├── script/ SCRHUB 可扫描和执行的脚本目录
├── src/
│ ├── 3rdparty/ CivetWeb、SQLite、SHA-256、yyjson 等第三方源码
│ ├── main/ RTKHUB 控制台与 RTK 管理逻辑
│ ├── rtklib/ RTKLIB 核心源码
│ ├── scrhub/ SCRHUB 任务管理与日志 API
│ ├── terminal/ Web 虚拟终端支持
│ └── web_server/ 嵌入式 HTTP 服务与 Web API
├── util/ 独立工具源码
│ ├── ephub/ EPHUB 后端
│ ├── rnx2rtcm/ RINEX 转 RTCM3
│ └── rnx2rtkp/ RINEX 后处理
├── tools/ 开发与验证脚本
├── CMakeLists.txt CMake 构建配置
├── Dockerfile Docker 构建配置
├── docker-compose.yml 本地 Compose 部署示例
└── rtkhub.sln Visual Studio 解决方案
技术栈
| 层级 | 技术 |
|---|---|
| RTK/GNSS 引擎 | RTKLIB demo5 |
| 后端语言 | C/C++,C99 标准 |
| HTTP 服务 | CivetWeb |
| 数据库 | SQLite 3 |
| JSON | yyjson |
| 前端 | 原生 ES6+ JavaScript、Fetch API |
| 图表 | ECharts |
| 地图 | Leaflet |
| 样式 | tokens.css、ui.css、模块 CSS |
构建后验证
-
启动 RTKHUB:
.\rtkhub.exe -s -k conf\rtkhub.list -
浏览器访问
http://127.0.0.1:5426/。 -
首次启动时记录控制台打印的
admin随机密码。 -
检查
database/、log/或logs/、result/是否按配置生成。 -
至少启动一条基线,确认状态、日志和结果文件更新。