前言
大家有沒有遇到過這樣的問題:明明已經啟用了某個功能,卻因為編譯報錯不得不進入 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版權協議,轉載請附上原文出處鏈接及本聲明。
-
開發板
+關注
關注
25文章
5330瀏覽量
100361 -
RT-Thread
+關注
關注
31文章
1337瀏覽量
41305 -
scons
+關注
關注
0文章
2瀏覽量
991
發布評論請先 登錄
相關推薦
評論