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 生命周期、数值范围/Formatter/编辑 Session、Chart buffer、组件自有动画、Popup FIFO 和三种 request payload、PopupProgress、PopupValueDigits、NumScroll、ListView 菜单与 toggle identity、IconView 在 128x64 和非标准 display 上的布局、FocusManager 转换、Canvas camera、渲染调度和 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
4
5
git diff --check
rg -n "std::|#include <(vector|string|memory|functional|map|queue)>" \
include src examples tests
rg -n -i '\b(float|double|snprintf|sprintf|sin|cos)\b' include src
./build/tests/memory_metrics

源码扫描应当没有匹配;这种情况下 rg 的退出码是 1。模拟器使用 Qt/STL 的边界需要和 PixelUI core 区分对待。memory_metrics 只报告主机 ABI 尺寸,前后比较必须使用相同编译器和配置。

avatar
Link0327
喵🐱me0w, but furry wolf. 尝试变得毛茸茸
Link's Github
最新文章
网站信息
文章数目 :
2
本站访客数 :
本站总浏览量 :
最后更新时间 :