Kconfig 配置的学习
Kconfig是按照特定的格式来书写的文件,在编译前生成顶层头文件,用来裁剪出需要的代码,学习一下 Kconfig 配置工具的编写
Kconfig 一般配置项
- 标题栏
mainmenu "Hello Kconfig"
- 菜单
menu "root menu"
...
endmenu
- 注释
comment "config value type"
- 帮助信息
help
this is a helpful information.
- 引用其他配置文件
source "arch/Kconfig"
source "kernel/Kconfig"
source "drivers/Kconfig"
📌 Kconfig 数据配置项
数据配置
- 配置的数据类型,有字符串、十六进制、数字、布尔、三态类型
string | hex | int | bool | tristate
- 一个数据配置项
config CFG_STR
string "I AM STRING VALUE"
default "str"
- 范围限制
range 0 888
- 选择
choice
prompt "A or B or C"
default CHOICE_A
config CHOICE_A
bool "A"
config CHOICE_B
bool "B"
config CHOICE_C
bool "C"
endchoice
- 判断
config CFG_IF
bool "I AM IF"
default n
if CFG_IF=y
config CFG_IF_Y
string "I AM IF_Y"
default "Y"
endif
if CFG_IF=n
config CFG_IF_N
string "I AM IF_N"
default "N"
endif
依赖关系
- 依赖关系
comment "depends on and select"
config CFG_PARENTMENU
bool "I AM PARENTMENU"
default n
config CFG_SUBMENU
hex "I AM SUBMENU"
# 有它才有'我'
depends on CFG_PARENTMENU
default 0x88
- 反向依赖关系
config CFG_SELECT_1
bool "I AM SELECT_1"
# 有'我'必有它
select CFG_SELECT_2
select CFG_IMPLY_2
default n
config CFG_SELECT_2
bool "I AM SELECT_2"
default n
🔼 实例
mainmenu "Hello Kconfig"
# 配置项最终生成 CONFIG_CFG_BOOL
menu "root menu"
# 配置类型
comment "config value type"
config CFG_BOOL
# 显示内容
bool "I AM BOOL VALUE"
# 默认值
default y
# 帮助信息
help
this is a helpful information.
config CFG_STR
string "I AM STRING VALUE"
default "str"
config CFG_INT
int "I AM INT VALUE"
range 0 88
default 99
config CFG_HEX
hex "I AM HEX VALUE"
range 0 888
default 0x99
config CFG_TRISTATE
tristate "I AM TRISTATE VALUE (y, n, m)"
default m
# 依赖关系
comment "depends on and select"
config CFG_PARENTMENU
bool "I AM PARENTMENU"
default n
config CFG_SUBMENU
hex "I AM SUBMENU"
# 有它才有'我'
depends on CFG_PARENTMENU
default 0x88
# 反向依赖关系
config CFG_SELECT_1
bool "I AM SELECT_1"
# 有'我'必有它
select CFG_SELECT_2
select CFG_IMPLY_2
default n
config CFG_SELECT_2
bool "I AM SELECT_2"
default n
# 选择
comment "choice"
choice
prompt "A or B or C"
default CHOICE_A
config CHOICE_A
bool "A"
config CHOICE_B
bool "B"
config CHOICE_C
bool "C"
endchoice
# 判断
config CFG_IF
bool "I AM IF"
default n
if CFG_IF=y
config CFG_IF_Y
string "I AM IF_Y"
default "Y"
endif
if CFG_IF=n
config CFG_IF_N
string "I AM IF_N"
default "N"
endif
endmenu
# 其他路径
source "arch/Kconfig"
source "kernel/Kconfig"
source "drivers/Kconfig"
主页效果
root menu 效果
- 一般界面
- 显示出隐藏项
⚡⚡⚡ OVER ⚡⚡⚡