menuconfig:表示新建(带子菜单的)菜单。菜单名字不显示在菜单中。子菜单属性继承该菜单.后面跟if enif语句,如果if成立则显示子菜单内容
menu :定义了菜单名字,必须以endmenu结束,menu后跟的名字会显示在菜单中。
config:菜单中的选项,可以用在menuconfig或menu下
choice: 将多个类似的配置选项组合在一起,供用户单选或多选,以endchoice结束。
depends on:本配置项依赖于另一个配置项,类似requires。在menuconfig中如果depends on不满足,当前菜单项则不显示
select:表示depends on的值有效时,下面的select也会成立,将相应的内容选上。
help:帮助信息,内容会显示在帮助的help选项上。
tristate:配置选项的类型三态(triple state),Y/N/M。
bool:配置选项的类型
string:配置选项的类型
hex:配置选项的类型,16进制
int:配置选项的类型
source:跟同名Linux指令一个意思
default y: 表示默认是勾上的,也可以写为default m或者default n
if ...enif: 就是if的意思,需要enif结束
如何使用Kconfig
在Linux源码根目录下执行make menuconfig,弹出Kconfig配置的菜单。Save时会在当前目录下保存.config文件,作为Makefile的一个引用在make时需调用Makefile和该文件.
值得一提的是,很多人说Kconfig顶层文件是arch/arm/Kconfig,这一说话欠妥当的。
Kconfig顶层就是源码根目录下Kconfig,否则在当前目录下make menuconfig也就失效了,在这个Kconfig文件内source "arch/$SRCARCH/Kconfig"。而在嵌入式开发板系统内$SRCARCH被设置为arm,第二层就是调用arch/arm/Kconfig。