Build and Test the Simulator / 构建与测试模拟器
模拟器用 Qt6 打开 U8g2 framebuffer,是修改 App、Widget 和动画时最快的可视化检查方式。
准备
1 | git submodule update --init --recursive |
需要 CMake、C++20 编译器和 Qt6 Core/Gui/Widgets。CMake 找不到 Qt,可以显式给出:
1 | cmake -S . -B build \ |
运行文件在:
1 | ./build/simulator/u8g2_emulator |
回归测试
1 | ctest --test-dir build --output-on-failure |
当前测试覆盖 App arena/ViewManager 生命周期、数值范围/Formatter/编辑 Session、Chart buffer、组件自有动画、Popup FIFO 和三种 request payload、PopupProgress、PopupValueDigits、NumScroll、ListView 菜单与 toggle identity、IconView 在 128x64 和非标准 display 上的布局、FocusManager 转换、Canvas camera、渲染调度和 Widget 树。
AddressSanitizer
1 | cmake -S . -B build-asan \ |
ASan 主要帮助发现 Widget/回调/动画引用已销毁 App 成员的问题.
内存报告
1 | ./build/tests/memory_metrics |
sizeof 只对当前编译器、ABI 和配置有效。移植到 MCU 后必须重新测量,并结合 linker map 看 RAM/flash。
提交前的最小检查
1 | git diff --check |
源码扫描应当没有匹配;这种情况下 rg 的退出码是 1。模拟器使用 Qt/STL 的边界需要和 PixelUI core 区分对待。memory_metrics 只报告主机 ABI 尺寸,前后比较必须使用相同编译器和配置。


