本文章 来自原创专栏《ESP32教学专栏 (基于ESP-IDF)》,讲解如何使用 ESP-IDF 构建 ESP32 程序,发布文章并会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨!
↓↓↓通过下方对话框进入专栏目录页↓↓↓
CSDN 请求进入目录 _ O x
是否进入ESP32教学导航(基于ESP-IDF)?
确定
#include "sdkconfig.h"即可。menuconfig与Linux Kernel的menuconfig类似,有助于为Linux学习打下基础。在 ESP-IDF 构建系统中,有这么几种文件。相信读者学到现在可能已经见过其中几种了。它们分别是:
Kconfig文件Kconfig.projbuild文件sdkconfig文件sdkconfig.hsdkconfig.default文件sdkconfig.old文件sdkconfig.ci文件sdkconfig.remane文件
sdkconfig.default文件还可以针对某种设备单独添加,例如:
对于ESP32和ESP32-S3,则分别对应sdkconfig.default.esp32和sdkconfig.default.esp32s3。
这几个文件都与“组件”的配置有关。在详细讲解组件配置之前,我们先分别用一句话概括这几个文件的作用分别是什么:
| 文件 | 位置 | 作用 | 概括 |
|---|---|---|---|
Kconfig | 组件目录 【手动创建】 | 用于生成menuconfig中的菜单于Component Configuration子菜单 | 菜单模板 |
Kconfig.projbuild | 组件目录 【手动创建】 | 用于生成menuconfig中的菜单于顶层菜单 | 菜单模板 |
sdkconfig | 项目根目录 【自动生成】 | 用于以键值对的形式保存Kconfig设置手动改动无效 | 保存设置 |
sdkconfig.h | 工程编译生成文件build/config/【自动生成】 | C语言访问Kconfig配置的方式 手动改动无效 | C语言接口 |
sdkconfig.default | 项目根目录 【手动创建】 | 自定义sdkconfig的默认值,与sdkconfig文件格式相同,不会被构建系统更改。构建系统自动使用此文件的配置填充 sdkconfig中未设置的值 | 缺省值清单 |
sdkconfig.old | 项目根目录 【自动生成】 | 当保存旧的menuconfig设置时,构建系统自动备份一个原来的sdkconfig文件 | 备份 |
sdkconfig.ci | 该文件是 CI(持续集成)测试框架的一部分,在正常构建过程中会被忽略。 | 单元测试时 | |
sdkconfig.remane | 用于重命名弃用的配置名,方便旧配置文件快速用于新配置 | 向前兼容 |
下面以KConfig文件为例,即生成菜单于menuconfig中的Component Configuration子菜单中。
如果想设置于顶层菜单,则请以类似的规则创建KConfig.projbuild文件夹
menu "My menu"
// 内容
endmenu
效果:

按?(即Shift+ ? / ?_/ ?/)即可打开帮助(help字段)
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语法访问,变量名与这个一致。
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+ ? / ?_/ ?/)即可打开帮助。
这样会生成所选的宏定义
