前言
大家有没有遇到过这样的问题:明明已经启用了某个功能,却因为编译报错不得不进入 menuconfig 去启用其依赖的功能;或者是为了启用某个功能,需要在 menuconfig 中四处寻找相关选项,甚至有时不知道该如何在特定板子上正确配置这些功能。
于是,结合 scons 的 --attach 功能应运而生。通过使用 scons --attach 命令,可以快速加载前人已经配置好的功能(PS:由于这些配置已经通过 CI 检查,确保不会出现编译错误)。
实际操作
这里以星火一号开发板为例子
首先是查看当前bsp支持所有的attachconfig
scons --attach=?
比如说我想快速打开rw007模块的配置
那么在终端里就可以输入
scons --attach=peripheral.rw007
这样rw007就打开了,然后就可以用scons -j4进行编译
如果还想打开其他功能也可以重复上述操作
最后是恢复命令
scons --attach=default
首次使用 scons --attach=peripheral.rw007命令开启功能时,会自动备份当前的 .config 和 rtconfig 文件。之后,如果需要恢复,系统会将备份的 .config 和 rtconfig 文件恢复为未使用--attach 命令之前的状态。
如何编写attachconfig
首先在刚拉下来的bsp里用menuconfig配置好选项
然后按下d弹出最小配置保存页面,再次按下回车即可
接下来在bsp目录下就会看到一个叫defconfig的文件
其中的内容就是刚刚用menuconfig打开了的设置
比如说:
上图的CONFIG_RT_USING_NANO=y就是我刚打开了的nano配置
然后找到当前bsp中.ci\attachconfig下面的ci.attachconfig.yml
比如说我想配置nano的attach
那么按照这个格式添加到attachconfig文件中
nano:
kconfig:
- CONFIG_RT_USING_NANO=y
其中的<<: *scons 是yaml语法
用于继承另一个属性的内容
这里完整的语句是这样
scons.args: &scons
scons_arg:
- '--strict'
nano:
<<: *scons
kconfig:
- CONFIG_RT_USING_NANO=y
主要用于ci的时候开启严格编译,这里可以先不管
具体关于attachconfig可以参考以下帖子:(可在以下网站https://club.rt-thread.org/index.html🔍 搜索下列对应名称浏览相应文章)
RT-Thread-还在担心bsp不好维护吗?快使用yml管理主线bspRT-Thread问答社区 - RT-Thread
RT-Thread-【bsp】如何添加.ci,attach文件完善bsp编译RT-Thread问答社区 - RT-Thread
RT-Thread-【1024】【ci】【github】【bsp】RT-THREAD中的attach文件使用(开启对应配置的CI检查)RT-Thread问答社区 - RT-Thread
结语
感觉attachconfig还有很大的潜力,可以让 menuconfig 保留最基础的配置,而将更复杂的功能配置放到 attachconfig 中。这样不仅能够确保刚拉下来的 BSP 是一个最小系统,同时也能保留 menuconfig 的灵活性,使得系统配置更加模块化和易于扩展。
轻度开发用attachconfig,深度开发用menuconfig从零配置
后续感觉可以出个图形化界面,根据功能类别分个类,然后每个attach是通过打勾的形式去开启
由于这个功能刚刚推出,大部分 BSP 中的 attachconfig 还不是开箱即用的,甚至有的 BSP 还没有 attachconfig 。因此,仍然需要大家共同努力,进一步完善和优化它,以确保其在各个项目中的兼容性和可用性。
该功能仅支持ENV下的RT-Thread
————————————————
版权声明:本文为RT-Thread论坛用户「alight」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://club.rt-thread.org/ask/article/d273bbcd1f8779bc.html