ESP32 之 ESP-IDF 教学(十八)—— 组件配置(KConfig)

文章目录
一、组件配置涉及的文件简介
1、为什么要用组件配置
2、组件配置相关文件详解
二、创建组件配置
1、创建菜单(menu)
2、创建菜单项目(config)
3、创建单选选项(choice)
一、组件配置涉及的文件简介
1、为什么要用组件配置
组件配置可以将相关配置常量移出代码,增强配置的可复用度
组件配置变量也可以被CMake访问,可以通过手写逻辑实现根据配置执行不同的构建方案。(如某个源文件要不要添加到构建系统)
组件配置生成的宏定义,配合C语言的预处理语句,可以针对不同的配置改变代码解结构。
组件配置生成的宏定义在C语言中是全局的宏定义,可以在任意处访问配置项。只需要#include "sdkconfig.h"即可。
ESP-IDF构建系统中的menuconfig与Linux Kernel的menuconfig类似,有助于为Linux学习打下基础。
2、组件配置相关文件详解
在 ESP-IDF 构建系统中,有这么几种文件。相信读者学到现在可能已经见过其中几种了。它们分别是:

Kconfig文件
Kconfig.projbuild文件
sdkconfig文件
C语言头文件sdkconfig.h
sdkconfig.default文件
sdkconfig.old文件
sdkconfig.ci文件
sdkconfig.remane文件
sdkconfig.default文件还可以针对某种设备单独添加,例如:
对于ESP32和ESP32-S3,则分别对应sdkconfig.default.esp32和sdkconfig.default.esp32s3。

这几个文件都与“组件”的配置有关。在详细讲解组件配置之前,我们先分别用一句话概括这几个文件的作用分别是什么:

 

二、创建组件配置
下面以KConfig文件为例,即生成菜单于menuconfig中的Component Configuration子菜单中。

如果想设置于顶层菜单,则请以类似的规则创建KConfig.projbuild文件夹

1、创建菜单(menu)
menu "My menu"
// 内容
endmenu
效果:

 


按?(即Shift+? / ?_/?
/

)即可打开帮助(help字段)

2、创建菜单项目(config)
menu "My menu"

# bool 是勾选框
config MY_TEST_BOOL
bool "bool_test"
help
This is a bool test.

# int 是输入整数
config MY_TEST_INT
int "int_test"
default 12345
help
This is an int test.

# hex 是输入16进制数
config MY_TEST_HEX
hex "hex_test"
default 0x7FFF
help
This is a hex test.

# tristate 在 ESP-IDF构建系统中会被当做 bool 处理
config MY_TEST_TRISTATE
tristate "tristate_test"
help
This is a tristate test.

# string 表示一个字符串
config MY_TEST_STRING
string "string_test"
help
This is a string test.

endmenu

效果:

 

宏定义的名字是CONFIG_ + 配置名(config后边的)

对于bool,只有被选择的配置才会生成宏定义为1

 


可以编辑值,按?(即Shift+? / ?_/?
/

)即可打开帮助(help字段)

也可以在CMakeLists.txt里使用这个变量,方法请按照CMake语法访问,变量名与这个一致。

3、创建单选选项(choice)
menu "My Menu"

choice MY_TEST_CHOICE
prompt "My Test Choice"
default MY_CHOICE_OPTION1
help
This is a help.

config MY_CHOICE_OPTION1
bool "option1"
help
help for option1

config MY_CHOICE_OPTION2
bool "option2"
help
help for option2

config MY_CHOICE_OPTION3
bool "option3"
help
help for option3
endchoice
endmenu

效果:

图一:根据上文配置中的default语句,menuconfig默认选择了option1

 


图二:按空格进入单选区域,可以看到它显示了所有option

 


同样,按?(即Shift+? / ?_/?
/

)即可打开帮助。

这样会生成所选的宏定义

 

————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_50064262/article/details/126540334

posted @ 2024-04-08 13:40  苍月代表我  阅读(3876)  评论(0)    收藏  举报