跳到主要内容

源码构建与项目结构

本文面向需要从源码构建 RTKHUB 工具链、检查发布包内容或参与底层开发的读者。内容以主项目 README.mdCMakeLists.txtDockerfile 和工程目录为准。

主要平台Windows 10/11、Windows Server 2019+,推荐 Visual Studio 2022。
跨平台构建CMake 3.15+,Linux 当前以源码或 Docker 构建为主。
发布重点CMake 默认会把 public/ 前端资源嵌入 RTKHUB 可执行文件。

构建环境

项目要求
编译器支持 C99 标准
Windows IDEVisual Studio 2022 或更高版本
CMake3.15 或更高版本
数据库SQLite 内嵌,无需单独安装
HTTP 服务CivetWeb 内嵌
JSONyyjson

浏览器侧要求支持 ES6+ 和 Fetch API,推荐 Chrome 90+、Firefox 88+、Edge 90+ 或 Safari 14+。

Visual Studio 构建

主程序:

  1. 使用 Visual Studio 2022 打开主项目 rtkhub.sln
  2. 选择 Debug x64Release x64
  3. 构建 rtkhub 项目。

其他工具:

工具工程
STRHUBstrhub/strhub.sln
EPHUBephub/ephub.sln
RNX2RTKPrnx2rtkp/rnx2rtkp.sln
RNX2RTCMrnx2rtcm/rnx2rtcm.sln

CMake 构建

cmake -S . -B build
cmake --build build --config Release

生成的可执行文件位于 bin/ 目录。默认构建会将 public/ 前端静态资源压缩后嵌入 rtkhub.exe,发布时不需要额外携带 public/ 目录。

CMake 选项

选项默认值说明
RTKHUB_EMBED_WEB_ASSETSONpublic/ 静态资源嵌入可执行文件
RTKHUB_OBFUSCATE_WEB_ASSETSON嵌入资源时压缩/混淆 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-essentialcmakepython3、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
JSONyyjson
前端原生 ES6+ JavaScript、Fetch API
图表ECharts
地图Leaflet
样式tokens.cssui.css、模块 CSS

构建后验证

  1. 启动 RTKHUB:

    .\rtkhub.exe -s -k conf\rtkhub.list
  2. 浏览器访问 http://127.0.0.1:5426/

  3. 首次启动时记录控制台打印的 admin 随机密码。

  4. 检查 database/log/logs/result/ 是否按配置生成。

  5. 至少启动一条基线,确认状态、日志和结果文件更新。