Kconfig 语言
一、Kconfig结构
Kconfig是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config
Kconfig格式:
menu "MenuName"
comment "describe message"
config Option Name
bool xxxx
depends on xxxx
select xxxx
help
.............
source "route/Kconifg"
......
config Option Name
bool type
default y or n
depends on xxxx
select xxxx
help
.............
......
endmenu
menu:用于生成菜单,menu之后是MenuName(菜单名)。menu和endmenu间有很多config条目;
comment:用于定义一些帮助信息,出现在界面的第一行;
config:表示一个配置选项的开始;紧跟着的是Option Name(配置选项的名称),省略了前缀"CONFIG_";
bool:表示变量类型,有5种类型:bool、tristate、string、hex和int,其中tristate和string是基本的类型:
bool变量的值: y和n
tristate变量的值:y、n和m
string变量的值: 字符串
hex :取值为十六进制数据
int :取值为十进制数据
bool之后的字符串“xxxx”是提示信息,在配置界面中上下移动光标选中它时,就可以通过按空格或回车键来设置CONFIG_ xxxx的值(即选择了哪个值就会把该值赋值给CONFIG_xxxx);
default :为变量默认值,可被用户设置值覆盖;
depends on:表示依赖于xxxx,“depends on xxxx”表示只有当xxxx配置选项被选中时,当前配置选项的提示信息才会出现,才能设置当前配置选项,说明:
select:是反向依赖关系的意思,即当前配置选项被选中,则xxxx就会被选中。
help :它其中的文字将作为配置界面中的帮助信息;
choice
prompt "xxxx"
default y or n
config xxxx
.........
config xxxx
.........
endchoice
choice条目将多个类似的配置选项组合在一起,供用户单选或多选。prompt "xxxx"给出提示信息,光标选中后回车进入就可以看到多个config条目定义的配置选项,choice条目中定义的变量只有bool和tristate。
"default" <expr> ["if" <expr>]
一个配置选项可以有任意多个默认值。如果有多个默认值,那么只有第一个被定义的值是可用的。如果用户没有设置(通过上面的输入提示),配置选项的值就是显示输入也即默认值。如果可以显示输入提示的话,就会把默认值显示给用户,并可以让用户进行修改。
默认值的依赖关系可以用 "if" 添加。(可选项)
4、 depends on 和 select
打开 arch/Kconfig 文件,在里面有这如下代码:
7 config SYS_GENERIC_BOARD
8 bool
9 depends on HAVE_GENERIC_BOARD
10
11 choice
12 prompt "Architecture select"
13 default SANDBOX
14
15 config ARC
16 bool "ARC architecture"
17 select HAVE_PRIVATE_LIBGCC
18 select HAVE_GENERIC_BOARD
19 select SYS_GENERIC_BOARD
20 select SUPPORT_OF_CONTROL
第 9 行,“depends on”说明“SYS_GENERIC_BOARD”项依赖于“HAVE_GENERIC_BOARD”,也就是说“HAVE_GENERIC_BOARD”被选中以后“ SYS_GENERIC_BOARD”才能被选中。
第 17~20 行,“select”表示方向依赖,当选中“ARC”以后,“HAVE_PRIVATE_LIBGCC”、“HAVE_GENERIC_BOARD”、“SYS_GENERIC_BOARD”和“SUPPORT_OF_CONTROL”这四个也会被选中。
https://www.cnblogs.com/schips/p/12083894.html
感谢:黄树超
https://www.cnblogs.com/fluidog/p/15176680.html#:~:text=%EE%80%80Kconfig%EE%80%81%20%E8%AF%AD%E8%A8%80%20%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%20Kconifg%20%E6%96%87%E4%BB%B6%E5%8C%85%E5%90%AB%E4%B8%80%E7%B3%BB%E5%88%97%E4%BB%A5%E5%85%B3%E9%94%AE%E5%AD%97%E5%BC%80%E5%A4%B4%E7%9A%84%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%EF%BC%88%E8%8F%9C%E5%8D%95%E9%A1%B9%EF%BC%89%E3%80%82%20config%20%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E7%AC%A6%E5%8F%B7%20symbol%E3%80%82%E5%AE%83%E6%98%AF%E6%9E%84%E6%88%90,%E7%9A%84%E7%BB%9D%E5%A4%A7%E6%95%B0%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%EF%BC%8C%E5%85%B6%E4%BB%96%E8%8F%9C%E5%8D%95%E5%85%A5%E5%8F%A3%E5%B8%AE%E5%8A%A9%E7%BB%84%E7%BB%87%E6%AD%A4%E7%B1%BB%E5%9E%8B%E5%85%A5%E5%8F%A3%E3%80%82%20%EE%80%80%E8%AF%AD%E6%B3%95%EE%80%81%E5%A6%82%E4%B8%8B%EF%BC%9A%20config%20%3Csymbol%3E%20%3Cconfig%20options%3E%20menuconfig%20