尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何把第三方 Arduino 库加入 arduino-esp32 的 External Library Test CI 并查看各 SoC 编译结果?

如何把第三方 Arduino 库加入 arduino-esp32 的 External Library Test CI 并查看各 SoC 编译结果? 如何把第三方 Arduino 库加入 arduino-esp32 的 External Library Test CI 并查看各 SoC 编译结果【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32如果你想确认某个第三方 Arduino 库在 ESP32 系列各芯片上能否正常编译可以把它加入 arduino-esp32 仓库的 External Library Test CI。该测试对lib.json中列出的库在所有受支持的 ESP32 芯片上逐一编译其示例 sketch并把结果汇总成一张各 SoC 的编译状态表。需要明确的一点是这只是编译测试不保证库/示例烧录到设备后能正常运行见 external_libraries_test.rst 中的说明。整个流程是修改.github/workflows/lib.json添加库条目 → 提交 PR 并由 Espressif 团队打上lib_test标签触发 CI → 在 PR 测试和每周定时测试中查看各 SoC 的编译结果。测试的运行方式根据 lib.yml 和 external_libraries_test.rst定时测试每周日 4:00cron:0 4 * * SUN对 arduino-esp32 的 master 分支运行一次结果写入 gh-pages 分支的LIBRARIES_TEST.md文件。PR 测试PR 带有lib_test标签时触发。这个标签由 Espressif 团队在 PR 上添加用来检查你的改动是否让新增的库/示例能够编译。PR 测试会把所有库和 sketch 编译2 次PR 改动前/改动后结果按BEFORE - AFTER的顺序排列在表格中用于看出 PR 是破坏还是修复了某些库。编译目标矩阵由 socs_config.sh 中的BUILD_TEST_TARGETS生成即硬件测试、Wokwi 仿真、QEMU 仿真三组目标的并集当前包括esp32、esp32c3、esp32c5、esp32c6、esp32h2、esp32p4、esp32s2、esp32s3。每个目标使用espressif:esp32:target作为 FQBN 进行 sketch 编译并开启 warnings 报告。定时测试结果表文档示例在 lib.json 中添加你的库编辑 lib.json位于.github/workflows/目录在数组中按字母顺序插入你的库条目。每个条目由以下几类参数组成库来源name和source-url只能二选一name—— 库在 Arduino Library Manager 中的名称source-url—— 库的 GitHub 仓库 URL用于该库未收录在 Arduino Library Manager 的情况。必填项exclude_targets—— 从测试中排除的目标列表。仅当某个 SoC 不支持库用到的外设时才使用否则留空数组sketch_path—— 要测试的 sketch 路径可多个指向库 examples 目录下的.ino文件CI 会把库安装到 runner 的~/Arduino/libraries/下再编译这些路径。可选项version—— 库的版本号required-libs—— 编译被测库所必需的依赖库每项同样可以用source-url指定destination-name—— 库安装时使用的文件夹名仅必要时使用。示例 1来自 Arduino Library Manager 的库文档示例将name和sketch_path换成你的库名与对应示例 sketch 路径exclude_targets中排除不支持该外设的 SoC{ name: ArduinoBLE, exclude_targets: [ esp32s2 ], sketch_path: [ ~/Arduino/libraries/ArduinoBLE/examples/Central/Scan/Scan.ino ] }示例 2来自 GitHub URL 的库且带必需依赖文档示例{ source-url: https://github.com/me-no-dev/ESPAsyncWebServer.git, required-libs: [ {source-url: https://github.com/me-no-dev/AsyncTCP.git} ], exclude_targets: [], sketch_path: [ ~/Arduino/libraries/ESPAsyncWebServer/examples/CaptivePortal/CaptivePortal.ino, ~/Arduino/libraries/ESPAsyncWebServer/examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino, ~/Arduino/libraries/ESPAsyncWebServer/examples/regex_patterns/regex_patterns.ino, ~/Arduino/libraries/ESPAsyncWebServer/examples/simple_server/simple_server.ino ] }现有条目可以参考 lib.json 中的真实写法例如ArduinoBLE条目同时排除了esp32s2和esp32p4ESPAsyncWebServer条目通过source-url引入并声明了AsyncTCP依赖。提交 PR 并触发测试将lib.json的改动提交为一个 PR。Espressif 团队有人会给该 PR 添加lib_test标签CI 随即运行检查新增条目是否正确、库/示例能否编译。PR 合并后下一次每周定时测试会编译你的库并把结果追加到 gh-pages 分支的LIBRARIES_TEST.md中。PR 测试的结果表文档示例结果为 BEFORE - AFTER 两列如何读懂各 SoC 的编译结果LIBRARIES_TEST.md是一张以库为行、SoC 为列的表格每个单元格有一个图标图标前的数字表示编译出该结果的示例数量绿色对勾 —— 编译成功警告图标 —— 编译成功但产生了 warnings红色叉 —— 编译失败N/A—— 未测试因为该目标在exclude_targets列表中。查看方式PR 测试在带lib_test标签的 PR 的 CI 输出中查看 BEFORE - AFTER 对照表确认你的改动没有把原本能编译的库/示例改坏定时测试PR 合并后等待下一次每周定时测试运行然后在仓库 gh-pages 分支的LIBRARIES_TEST.md文件中查看你库所在行、各 SoC 列的状态。限制与注意点编译通过不等于运行时正确文档明确说明该测试只是编译示例不保证烧录到设备后没有问题。exclude_targets的用途被限定为该 SoC 不支持库所用的外设不要用它来跳过编译失败的 SoC某个 SoC 编译失败时应按测试结果排查库对该 SoC 的兼容问题。name与source-url只能使用其中一个二者同时填写不符合参数约定。新条目请插入lib.json的字母顺序位置否则 PR 评审可能要求调整。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表