@@ -78,7 +78,7 @@
|
||||
├── CMakeLists.txt # CMake 构建脚本(扫描模式切换、导出宏、输出目录)
|
||||
├── CHANGELOG.md # 变更日志(Keep a Changelog 格式,按 git 提交记录维护)
|
||||
├── README.md # 本文件:项目说明(架构、接口、流程、算法、参数)
|
||||
├── requirements.md # 需求说明:数据记录调试功能修改要求(结构体经 ormpp 写入 SQLite、Release 可屏蔽、数据分类入不同表、宏记录点;原日志文件输出需求已实现)
|
||||
├── requirements.md # 需求说明:构建脚本与 VS Code 任务调整(Debug/Release × 扫描体制 × RDP_DATA_RECORD,5 个任务)
|
||||
├── archived_docs/ # 过期文档留档(仅作历史参考;接口与流程以本 README 与 docs/ 专项说明为准)
|
||||
│ ├── BUG_REPORT.md # 全量逻辑 BUG 分析报告(P0~P3,37 项)
|
||||
│ └── BUG_FIX_REPORT.md # BUG 修复报告(修复明细 + 编译验证结果)
|
||||
@@ -88,14 +88,17 @@
|
||||
│ └── data_record_debug.md # 数据记录调试功能说明(开关与构建、运行期行为、表结构约定、新增记录点四步配方、6 张在用记录表清单与字段、查询示例)
|
||||
├── design_docs/ # 设计与讨论资料留档(被 .gitignore 忽略、不入库;含设计讨论、产品介绍与 README/流程报告的导出、渲染版本)
|
||||
├── .vscode/ # VS Code 工程配置
|
||||
│ ├── settings.json # cmake.generator=NMake、MSVC2022 x64 环境变量、compile_commands
|
||||
│ ├── cmake-variants.yaml # X256_PS / X256_MS × Release / Debug 变体
|
||||
│ ├── tasks.json # 配置/构建/清理任务(MSVC2022 x64)
|
||||
│ ├── settings.json # cmake.generator=NMake、MSVC2022 x64 环境变量、构建目录=变体推导、compile_commands
|
||||
│ ├── cmake-variants.yaml # X256_PS / X256_MS × Release / Debug × REC_AUTO / REC_OFF / REC_ON 变体
|
||||
│ ├── tasks.json # 仅 5 个任务:清理全部 + 4 种组合的「配置并构建全部」(原有任务已删除)
|
||||
│ └── scripts/ # 构建脚本(纯 ASCII,避免 cmd 代码页问题)
|
||||
│ ├── msvc_env.bat # 共享环境设置:定位 VS2022/cl.exe 并调用 vcvarsall.bat(x64)
|
||||
│ ├── configure.bat # CMake 配置(含旧工具集构建树自动清理)
|
||||
│ ├── build.bat # CMake 构建
|
||||
│ └── clean.bat # CMake 清理
|
||||
│ ├── config_paths.bat # 按「扫描体制/构建类型/记录模式」推导构建目录并校验参数
|
||||
│ ├── configure.bat # 单配置 CMake 配置(含旧工具集构建树自动清理)
|
||||
│ ├── build.bat # 单配置 CMake 构建
|
||||
│ ├── clean.bat # 单配置清理(删除该配置的构建目录)
|
||||
│ ├── build_all.bat # 两种扫描体制依次「配置 + 构建」(4 个构建任务调用)
|
||||
│ └── clean_all.bat # 清理全部配置的构建输出(「清理全部」任务调用)
|
||||
├── backup/
|
||||
│ └── data_process_class_dll/
|
||||
│ ├── data_process_class_dll.pro # 迁移前的 Qt/qmake 工程文件(备份)
|
||||
@@ -127,8 +130,10 @@
|
||||
│ ├── track_index_mangement.h / .cpp # 航迹号 1~500 分配/复用
|
||||
│ └── Eigen/ # 内置 Eigen 3 头文件库(仅用 Eigen/Dense)
|
||||
├── build/ # 构建产物(被 .gitignore 忽略)
|
||||
│ ├── X256_PS/ # 相扫构建目录(含 bin/data_process_class_dll.dll、rdp_playback.exe 等)
|
||||
│ ├── X256_MS/ # 机扫构建目录
|
||||
│ ├── X256_PS/ # 相扫构建根目录(每个完整配置一个子目录)
|
||||
│ │ ├── Debug/ # Debug 配置根:REC_AUTO / REC_OFF / REC_ON
|
||||
│ │ └── Release/ # Release 配置根:REC_AUTO / REC_OFF / REC_ON
|
||||
│ ├── X256_MS/ # 机扫构建根目录(结构同 X256_PS)
|
||||
│ └── output/ # 早期打包导出(其中 data_process_class_dll.h 为旧版 32 位时间戳接口,勿作为当前 API 依据)
|
||||
├── rdp_logs/ # 日志输出目录(运行时自动创建于宿主进程当前工作目录下,被 .gitignore 忽略)
|
||||
├── rdp_records/ # 数据记录库输出目录(运行时自动创建于宿主进程当前工作目录下,被 .gitignore 忽略;仅记录功能启用时产生)
|
||||
@@ -153,59 +158,72 @@
|
||||
|
||||
### 4.2 扫描体制
|
||||
|
||||
通过 CMake 缓存变量 RADAR_SCAN_MODE 切换,对应 parameters.h 中的两组宏:
|
||||
通过 CMake 缓存变量 RADAR_SCAN_MODE 切换,对应 parameters.h 中的两组宏;每个「扫描体制 × 构建类型 × 记录模式」组合拥有独立构建目录(见 4.3):
|
||||
|
||||
| 变量值 | 对应宏 | 构建目录 |
|
||||
|---|---|---|
|
||||
| PHASE_SCANNING | 相扫(X256_PS,默认) | build/X256_PS |
|
||||
| MECHANICAL_SCANNING | 机扫(X256_MS) | build/X256_MS |
|
||||
| PHASE_SCANNING | 相扫(X256_PS,默认) | build/X256_PS/<Debug\|Release>/<REC_AUTO\|REC_OFF\|REC_ON> |
|
||||
| MECHANICAL_SCANNING | 机扫(X256_MS) | build/X256_MS/<Debug\|Release>/<REC_AUTO\|REC_OFF\|REC_ON> |
|
||||
|
||||
### 4.3 命令行构建
|
||||
|
||||
```bat
|
||||
:: 需在 MSVC 2022 x64 环境中执行(先运行 vcvarsall.bat x64)
|
||||
cmake -S . -B build/X256_PS -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DRADAR_SCAN_MODE=PHASE_SCANNING ^
|
||||
-DCMAKE_CXX_COMPILER="D:/APP/VisualStudio2022/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe"
|
||||
cmake --build build/X256_PS
|
||||
构建目录由「扫描体制 + 构建类型 + 记录模式」三元组唯一确定,构建脚本、VS Code 任务与 CMake Tools 变体使用同一布局:
|
||||
|
||||
```text
|
||||
build/<X256_PS|X256_MS>/<Debug|Release>/<REC_AUTO|REC_OFF|REC_ON>
|
||||
```
|
||||
|
||||
或直接使用仓库提供的脚本(内部已通过 msvc_env.bat 调用 vcvarsall.bat x64 并校验 cl.exe):
|
||||
|
||||
```bat
|
||||
.vscode\scripts\configure.bat build/X256_PS PHASE_SCANNING Release
|
||||
.vscode\scripts\build.bat build/X256_PS
|
||||
.vscode\scripts\clean.bat build/X256_PS
|
||||
:: 单配置操作(参数:<PHASE_SCANNING|MECHANICAL_SCANNING> <Debug|Release> [AUTO|ON|OFF])
|
||||
:: 构建目录自动推导,例如 build/X256_PS/Release/REC_OFF
|
||||
.vscode\scripts\configure.bat PHASE_SCANNING Release OFF
|
||||
.vscode\scripts\build.bat PHASE_SCANNING Release OFF
|
||||
.vscode\scripts\clean.bat PHASE_SCANNING Release OFF
|
||||
:: 扫描体制也接受 X256_PS / X256_MS 别名;记录模式缺省为 AUTO
|
||||
.vscode\scripts\configure.bat X256_MS Debug
|
||||
```
|
||||
|
||||
configure.bat 会在构建目录中写入 `.msvc_toolset` 标记;若该目录是用其它工具集(例如旧的 MSVC 2013 缓存)配置的,脚本会先整体删除该目录再重新配置,避免新旧目标文件混链。用 `set VS2022_DIR=...`、`set MSVC_TOOLSET_VERSION=...`、`set MSVC_TARGET_ARCH=x86` 可覆盖默认的 VS 安装路径、工具集版本与目标架构。
|
||||
|
||||
数据记录调试功能由缓存变量 `RDP_DATA_RECORD` 控制,`configure.bat` 的第 4 个参数即该变量(取值 `AUTO`/`ON`/`OFF`,缺省 `AUTO`):
|
||||
|
||||
```bat
|
||||
:: AUTO(默认):Debug 构建启用、Release 构建关闭——交付构建不做任何记录
|
||||
.vscode\scripts\configure.bat build/X256_PS PHASE_SCANNING Debug AUTO
|
||||
:: 显式关闭(Release 交付推荐)或显式开启(临时在 Release 中排查)
|
||||
.vscode\scripts\configure.bat build/X256_PS PHASE_SCANNING Release OFF
|
||||
.vscode\scripts\configure.bat build/X256_PS PHASE_SCANNING Debug ON
|
||||
:: 一次配置并构建两个扫描体制(VS Code 任务「配置并构建全部(...)」的内部实现)
|
||||
.vscode\scripts\build_all.bat Release OFF
|
||||
.vscode\scripts\build_all.bat Release ON
|
||||
.vscode\scripts\build_all.bat Debug OFF
|
||||
.vscode\scripts\build_all.bat Debug ON
|
||||
:: 清理全部配置的构建输出(VS Code 任务「清理全部」的内部实现)
|
||||
.vscode\scripts\clean_all.bat
|
||||
```
|
||||
|
||||
启用时配置阶段打印 `数据记录调试功能:启用(C++20 静态库 rdp_record + 内置 SQLite)`,并额外构建静态库 `rdp_record`(记录模块 + SQLite,链接进 DLL);关闭时打印 `...:关闭(不编译记录模块,RDP_RECORD 为空操作)`,记录模块源码完全不参与编译。开关语义、表结构约定与新增记录点配方见 docs/data_record_debug.md。
|
||||
脚本内部通过 msvc_env.bat 调用 vcvarsall.bat x64 并校验 cl.exe,无需手工进入 MSVC 环境。configure.bat 会在每个构建目录写入 `.msvc_toolset` 标记;若该目录是用其它工具集(例如旧的 MSVC 2013 缓存)配置的,脚本会先整体删除该目录再重新配置,避免新旧目标文件混链。用 `set VS2022_DIR=...`、`set MSVC_TOOLSET_VERSION=...`、`set MSVC_TARGET_ARCH=x86` 可覆盖默认的 VS 安装路径、工具集版本与目标架构。
|
||||
|
||||
在 VS Code 中可直接运行任务(tasks.json):「CMake: 配置并构建 X256_PS (Release)」等,默认任务为 X256_PS Release。
|
||||
数据记录调试功能由缓存变量 `RDP_DATA_RECORD` 控制(取值 `AUTO`/`ON`/`OFF`,缺省 `AUTO`:Debug 启用、Release 关闭)。显式取值时构建目录名随之不同(`REC_OFF`/`REC_ON`),因此关闭与开启记录模块的产物可以并存。启用时配置阶段打印 `数据记录调试功能:启用(C++20 静态库 rdp_record + 内置 SQLite)`,并额外构建静态库 `rdp_record`(记录模块 + SQLite,链接进 DLL);关闭时打印 `...:关闭(不编译记录模块,RDP_RECORD 为空操作)`,记录模块源码完全不参与编译。开关语义、表结构约定与新增记录点配方见 docs/data_record_debug.md。
|
||||
|
||||
VS Code 任务(`.vscode/tasks.json`)只保留以下 5 个(原有任务已全部删除),可在「终端 → 运行任务」中选择,或按 `Ctrl+Shift+B` 运行默认构建任务「配置并构建全部(Release/REC_OFF)」:
|
||||
|
||||
| 任务 | 配置 |
|
||||
|---|---|
|
||||
| 清理全部 | 删除 `build/X256_PS`、`build/X256_MS` 下所有配置的构建输出(`build/output` 留档不动) |
|
||||
| 配置并构建全部(Release/REC_OFF) | Release + `RDP_DATA_RECORD=OFF`,分别构建 PHASE_SCANNING(X256_PS)与 MECHANICAL_SCANNING(X256_MS) |
|
||||
| 配置并构建全部(Release/REC_ON) | Release + `RDP_DATA_RECORD=ON`,两个扫描体制同上 |
|
||||
| 配置并构建全部(Debug/REC_OFF) | Debug + `RDP_DATA_RECORD=OFF`,两个扫描体制同上 |
|
||||
| 配置并构建全部(Debug/REC_ON) | Debug + `RDP_DATA_RECORD=ON`,两个扫描体制同上 |
|
||||
|
||||
> 注意:`clean_all.bat` / `clean.bat` 会**整体删除**对应的配置目录(不再只做 `cmake --build --target clean`),因此自行放置到 `build/<X256_XX>/<Debug|Release>/<REC_*>/bin/` 的 rdp_playback.exe、Qt5Core.dll、sqlite3.dll 与回放数据也会被删除,清理后需重新放置——这类手工工具与样例数据建议放在 `build/output/` 或仓库之外。`settings.json`、`c_cpp_properties.json` 的默认 `compileCommands` 指向 `build/X256_PS|MS/Debug/REC_ON/compile_commands.json`(便于 IntelliSense 覆盖记录模块代码);未构建该配置时 C/C++ 插件回退到内置 `includePath`/`defines`。
|
||||
>
|
||||
> 若此前用 CMake Tools 选择过变体(旧版本的变体键名为 `ps`/`ms`),升级后请重新执行一次「CMake: Select Variant」——旧的变体选择会持久化在 workspaceStorage 中,重命名键后需要重新选择才能得到 `build/X256_PS/Release/REC_OFF` 这类与任务一致的目录。
|
||||
|
||||
### 4.4 产物
|
||||
|
||||
| 产物 | 位置 |
|
||||
|---|---|
|
||||
| data_process_class_dll.dll(+ .pdb) | build/<X256_XX>/bin/ |
|
||||
| 导入库 data_process_class_dll.lib | build/<X256_XX>/lib/ |
|
||||
| data_process_class_dll.dll(+ .pdb) | build/<X256_XX>/<Debug\|Release>/<REC_*>/bin/ |
|
||||
| 导入库 data_process_class_dll.lib | build/<X256_XX>/<Debug\|Release>/<REC_*>/lib/ |
|
||||
| 安装(cmake --install) | DLL/导入库 → bin、lib,公开头文件 → include |
|
||||
| compile_commands.json | 构建根目录(供 VS Code IntelliSense 使用) |
|
||||
| rdp_record.lib(仅记录功能启用时) | build/<X256_XX>/lib/ —— 记录模块静态库(含 SQLite),已链接进 DLL,**无需随 DLL 分发** |
|
||||
| compile_commands.json | 各配置的构建目录根(供 VS Code IntelliSense 使用) |
|
||||
| rdp_record.lib(仅记录功能启用时) | build/<X256_XX>/<Debug\|Release>/<REC_*>/lib/(仅 `REC_ON`,或 Debug 下的 `REC_AUTO` 才生成)—— 记录模块静态库(含 SQLite),已链接进 DLL,**无需随 DLL 分发** |
|
||||
|
||||
产物为 **x64(AMD64)** 目标。宿主程序必须是 64 位、且使用与本 DLL 同一版本头文件重新编译——MSVC 2013 → MSVC 2022 同时伴随 x86 → x64 的 ABI 变化,旧的 32 位宿主无法加载该 DLL。
|
||||
|
||||
仓库 build/X256_PS/bin/ 内原附带 **rdp_playback.exe**(回放测试工具,依赖 Qt5Core.dll、sqlite3.dll,配置样例 RadarConfigParam.ini,可回放 .db 记录的点迹数据验证 DLL 输出),该工具不在本仓库源码范围内、当前构建目录中亦不存在,需自行放置;由于 DLL 已改为 x64,配套的 rdp_playback.exe 必须是 **x64 版本**(同时其自带 Qt5Core.dll / sqlite3.dll 也需为 x64),32 位版本无法加载新版 DLL。
|
||||
仓库 `build/X256_PS/<Debug|Release>/<REC_*>/bin/` 内原附带 **rdp_playback.exe**(回放测试工具,依赖 Qt5Core.dll、sqlite3.dll,配置样例 RadarConfigParam.ini,可回放 .db 记录的点迹数据验证 DLL 输出),该工具不在本仓库源码范围内、当前构建目录中亦不存在,需自行放置;由于 DLL 已改为 x64,配套的 rdp_playback.exe 必须是 **x64 版本**(同时其自带 Qt5Core.dll / sqlite3.dll 也需为 x64),32 位版本无法加载新版 DLL。
|
||||
|
||||
### 4.5 编译警告处理
|
||||
|
||||
@@ -213,9 +231,9 @@ configure.bat 会在构建目录中写入 `.msvc_toolset` 标记;若该目录
|
||||
- `CMakeLists.txt` 显式指定 `/W3`:CMake 3.15(策略 CMP0092)起不再把 `/W3` 放进 `CMAKE_CXX_FLAGS`,本工程此前一直以 `/W3` 构建,故显式恢复以保持警告级别不变。
|
||||
- 修复了 `/W3` 下全部 C4819(源文件字符集)、C4018(signed/unsigned 不匹配)、C4244(类型转换可能丢失数据)警告:循环变量按需改为 `size_t`,窄化转换改为 `static_cast` 显式转换,不改变原有计算逻辑。
|
||||
- MSVC 2022 在 `/W3` 下新增报出的 C4267(`size_t` → `int` 窄化)共 17 处已按同一约定修复(`track_asso.cpp`、`track_asso_tas.cpp`、`track_init.cpp`、`track_init_direct_tracking.cpp`、`tas_ctrl.cpp` 中改为 `static_cast<int>(...)`),同样不改变计算逻辑。
|
||||
- 当前四种配置(X256_PS / X256_MS × Release / Debug)均以 **0 warning、0 error** 通过编译。
|
||||
- 当前 8 种显式配置(X256_PS / X256_MS × Release / Debug × REC_OFF / REC_ON)均以 **0 warning、0 error** 通过编译(REC_AUTO 与「Debug=ON / Release=OFF」等价,未重复单独验证)。
|
||||
- cl.exe 的诊断信息为中文(跟随 VS 安装语言,`VSLANG=1033` 对 VS2022 的 cl.exe 无效),构建日志中偶见 `注意: 包含文件:` 行泄漏,属 CMake 依赖扫描的显示噪声,头文件依赖(`CMakeFiles/*.dir/**/*.obj.d`)记录完整,不影响增量编译。
|
||||
- **第三方库告警例外(仅记录功能启用时)**:数据记录模块的第三方依赖按上游原样内置在 `third_party/ormpp`(保留上游字节,含换行符,不转 BOM/编码),其中 `third_party/ormpp/thirdparty/sqlite3/sqlite3.c` 以源文件级 `/w` 单独编译,`data_process_class_dll/rdp_record.cpp` 用 `#pragma warning(push, 0)` / `(pop)` 包裹第三方头;除此之外本工程源码仍按上一条的 `/W3` 零告警标准编译(X256_PS/X256_MS × Release/Debug 四种配置实测 0 warning、0 error)。
|
||||
- **第三方库告警例外(仅记录功能启用时)**:数据记录模块的第三方依赖按上游原样内置在 `third_party/ormpp`(保留上游字节,含换行符,不转 BOM/编码),其中 `third_party/ormpp/thirdparty/sqlite3/sqlite3.c` 以源文件级 `/w` 单独编译,`data_process_class_dll/rdp_record.cpp` 用 `#pragma warning(push, 0)` / `(pop)` 包裹第三方头;除此之外本工程源码仍按上一条的 `/W3` 零告警标准编译(X256_PS/X256_MS × Release/Debug × REC_OFF/REC_ON 八种配置实测 0 warning、0 error)。
|
||||
|
||||
### 4.6 编译器升级说明(MSVC 2013 → MSVC 2022)
|
||||
|
||||
@@ -1047,6 +1065,7 @@ $$
|
||||
|
||||
| 提交 | 内容 |
|
||||
|---|---|
|
||||
| 工作区(构建脚本与 VS Code 任务调整,未提交) | 构建目录改为按完整配置隔离 `build/<X256_PS\|X256_MS>/<Debug\|Release>/<REC_AUTO\|REC_OFF\|REC_ON>`;新增 `config_paths.bat`(目录推导与参数校验)、`build_all.bat`(两种扫描体制依次配置+构建)、`clean_all.bat`(清理全部配置);`configure.bat`/`build.bat`/`clean.bat` 参数改为「扫描体制 + 构建类型 + 记录模式」并自动推导目录;`tasks.json` 原有 15 个任务全部删除,仅保留 5 个任务(清理全部 + Release/Debug × REC_OFF/REC_ON 的「配置并构建全部」);`settings.json`/`cmake-variants.yaml`/`c_cpp_properties.json`/`launch.json` 同步;验证:5 个任务实际执行均返回 0,8 种配置(PS/MS × Release/Debug × REC_OFF/REC_ON)0 warning、0 error,产物位于各配置目录的 `bin/`、`lib/` |
|
||||
| 3088ce4(**V1.5.8** 版本号来源) | 更新版本号至 V1.5.8(`PATCH_VERSION` 7→8) |
|
||||
| 782bff5 | 调整航迹质量下降逻辑(改为按未更新时长的二次函数衰减,系数 −0.0008 / −0.0025);**普通 TWS 航迹消亡条件改为由航迹质量确定**(`Quality < TRACK_DIE_QUALITY` = 0.3),重点航迹与 TAS 仍按外推圈数 |
|
||||
| 4b70b24 | 航迹质量下降策略改为按点迹未更新时间计算:`Trust_Track` 新增 `Unupdated_time`,外推 ΔT 计算移到外推上限判断之外,超限后质量继续下降 |
|
||||
@@ -1106,7 +1125,7 @@ $$
|
||||
| third_party/ormpp/UPSTREAM.md | 内置第三方源码的来源说明:ormpp / iguana / frozen / SQLite 版本、许可证、复现与升级步骤(含 blob 校验值) |
|
||||
| archived_docs/BUG_REPORT.md | 全量逻辑 BUG 分析(P0~P3 共 37 项,含位置、说明、建议、处置结论)——过期留档,仅作历史参考 |
|
||||
| archived_docs/BUG_FIX_REPORT.md | 修复明细、修复状态汇总表与 MSVC 2013 x86 编译验证记录——过期留档(对应 01d28e0 时期) |
|
||||
| requirements.md | 修改需求说明:数据记录调试功能(结构体经 ormpp 映射写入 SQLite、Release 版可屏蔽、数据分类入不同表、宏记录点、便于快速新增结构体、不使用异步写入)——框架已按该说明实现,记录表已从 2 个示例扩展为 6 张在用表(7 个实体定义),详见 docs/data_record_debug.md(此前同名的日志文件输出需求亦已实现) |
|
||||
| requirements.md | 修改需求说明:构建脚本与 VS Code 任务调整(Debug/Release × PHASE_SCANNING/MECHANICAL_SCANNING × `RDP_DATA_RECORD`,原有任务删除后重建 5 个任务)——已按该说明实现(见 4.3);此前同名的数据记录调试功能与日志文件输出需求亦已实现,分别见 docs/data_record_debug.md 与 10.1 |
|
||||
| backup/data_process_class_dll/data_process_class_dll.pro | 迁移前的 Qt/qmake 工程文件(源文件清单参考) |
|
||||
| .vscode/tasks.json、.vscode/cmake-variants.yaml | VS Code 构建任务与变体定义 |
|
||||
| build/X256_PS/bin/RadarConfigParam.ini | 回放测试工具(rdp_playback.exe)配置样例 |
|
||||
| .vscode/tasks.json、.vscode/cmake-variants.yaml、.vscode/scripts/*.bat | VS Code 任务、构建变体与构建脚本(构建目录布局见 4.3) |
|
||||
| build/X256_PS/<Debug\|Release>/<REC_*>/bin/RadarConfigParam.ini | 回放测试工具(rdp_playback.exe)配置样例(需自行放置) |
|
||||
|
||||
Reference in New Issue
Block a user