build: migrate from ctx to pure CMake + Conan 2 #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "migrate/cmake-manual"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
概述
项目构建系统从 ctx 迁移到纯 CMake + Conan 2。
变更
cpps.toml,项目完全脱离 ctx 工具依赖conanfile.py:手动 layout + CMakeDeps + CMakeToolchainCMakePresets.json:Ninja + debug/release 分离 presetmodules/*→src/{foundation,data,protocol,app,tools}/*yaml-cpp/0.8.0)photolink_*+ ALIAS 向后兼容copy/历史残留、tools/logviewer/重复模块tools/*独立工具迁移到src/tools/.opencode/agents/cpp-developer.md和AGENTS.mddoc/migration_plan.md完整迁移方案.gitignore构建验证
预存失败(与迁移前一致)
删除 cpps.toml,重写 conanfile.py/CMakePresets.json/全部 CMakeLists.txt 模块按5层架构重组: modules/* -> src/{foundation,data,protocol,app,tools}/* yaml-cpp 从系统安装改为 Conan 2 依赖(yaml-cpp/0.8.0) 目标名统一: photolink_* + ALIAS 向后兼容 删除 copy/ 历史残留、tools/logviewer/ 重复模块 taos_writer 条件编译(需 TDengine) 更新 .opencode/agents/cpp-developer.md 和 AGENTS.md 构建验证: 166 targets 编译通过, 11/11 核心测试通过修复 15 处真实 bug(P0×3 / P1×8 / P2×4),完整清单见 doc/bug_report.md: - logger: RingBuffer 越界写、CreateOrOpen 无条件删除已有 SHM - bus: 槽布局内存对齐(UB)、Subscription 析构 fd 泄漏、open_or_create 异常未区分 - comm: TcpComm::attach 用 delete 释放 libuv handle(use-after-free) - rtdb: 死区不写 SHM、告警限值恒为 0 - iprotocol: ModbusMaster 0x01/0x02 越界读、时间戳窄化、command 未映射 point_id、SOE 时间戳恒 0 - ctrl: ctrl_client_execute 忽略 request_id(SBO 链路断裂)、ctrl_plugin 未接入 Bus(控制发不出)、CtrlEngine stop 数据竞争 - sub_shell: echo_plugin 测试插件未构建、PluginLoader 库名解析 - config: 残留迁移前旧路径 同时修复文档路径:modules/* → src/{层}/*,统一仓库根 doc/ 与工程内 PhotoLink/doc/ 修复后 16/16 测试目标全部通过(517 用例)- 新增 src/tools/modbus_loop:modbus_loop_gen(生成单进程自环配置)+ run_loop(启动器)+ loop_verify(注入/校验) - 生成 config/modbus_loop/{slave,master}_modbus.bin + project_loop.bin - 单进程内 slave(TCP_SERVER 5020) + master(TCP_CLIENT) 闭环,注入 12345 读回 12345 PASS - fix(B3-3 P1): TcpComm::on_write 不 pop 队列,导致重复发送队首、Send-Q 堆积、数据错乱 - fix(B3-4 P1): TCP 句柄操作跨线程(uv_tcp_connect/uv_bind/uv_listen),新增 OpenLinkTask/ServerOpenTask 投递 ev_thread - fix(B3-5 P2): reconnect 误判 CONNECTING 为断开,重连条件排除 CONNECTING - io_thread 心跳 yield 改 sleep_for(1ms) 降 CPU