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
2
3
4
cmake -S . -B build \
-DBUILD_SIMULATOR=ON \
-DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt
cmake --build build -j

运行文件在:

1
./build/simulator/u8g2_emulator

回归测试

1
ctest --test-dir build --output-on-failure

当前测试覆盖 App arena/ViewManager 生命周期、Chart buffer、动画内联存储、Popup pool、PopupValueDigits、FocusManager 迁移和 Widget 树。

AddressSanitizer

1
2
3
4
5
6
cmake -S . -B build-asan \
-DBUILD_SIMULATOR=ON \
-DENABLE_ASAN=ON \
-DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt
cmake --build build-asan -j
ctest --test-dir build-asan --output-on-failure

ASan 主要帮助发现 Widget/回调/动画引用已销毁 App 成员的问题.

内存报告

1
./build/tests/memory_metrics

sizeof 只对当前编译器、ABI 和配置有效。移植到 MCU 后必须重新测量,并结合 linker map 看 RAM/flash。

提交前的最小检查

1
2
3
git diff --check
rg -n "std::|#include <(vector|string|memory|functional|map|queue)>" \
include src examples tests

第二条是快速扫描,模拟器自己使用 Qt/STL 的边界需要和 PixelUI 区分对待。

最新文章
网站信息
文章数目 :
1
本站访客数 :
本站总浏览量 :
最后更新时间 :