配置数据库是以树形结构组织的许多配置选项,如下形式:
每个条目都有各自的依赖对象,这些依赖对象用于决定条目的可见性。任何一个子条目仅当父条目可见时才是可见的。
菜单条目
大多数条目代表一个配置选项,其他的条目可以使配置选项条理化。如下定义了一个配置选项:
每行都以一个关键字开始和跟随多个参数。config
创建一个新的配置选项。紧接着的多行描述了这个配置选项的多个属性。这些属性可以包括配置选项的类型、输入提示、依赖对象、帮助文本和默认值。尽管可以使用同一个名称多次定义一个配置选项,但是多次定义只能有一个输入提示和类型一定不能冲突。
菜单属性
一个菜单条目有多种属性,并不是所有属性可以在任何地方使用。
1. type definition: "bool" or "tristate" or "string" or "hex" or "int"
每个配置选项必须有一个类型关键字。只有两种基本类型:tristate
和 string
;另外的类型都是在这两种类型上的变种。根据情况类型定义可以有一个输入提示input prompt
,因此如下两种用法具有相同效果:
bool "Networking support"
bool
prompt "Networking support"
2. input prompt: "prompt" <prompt> ["if" <expr>]
每个菜单条目至多有一个用户看得见的提示。根据需要,可以通过"if"
添加仅决定该提示可见性的依赖关系。
3. default value: "default" <expr> ["if" <expr>]
一个配置选项可以有多个默认值。若看见该配置选项有多个默认值,只有第一个定义的默认值生效。默认值不会受限于菜单条目定义的位置,也就是说默认值可以在别处定义或者被以前定义的所替代。
若用户没有设置其他值,默认值仅被赋值给配置符号。如果输入提示可见,默认值可被用户所见和被重写。根据需要,可以通过"if"
添加仅决定默认值有效性的依赖关系。
4. type definition + default value: "def_bool" or "def_tristate" <expr> ["if"] <expr>
这是一个类型定义加一个值的简记。根据需要,可以通过"if"
添加仅决定默认值有效性的依赖关系。
5. dependencies: "depends on" <expr>
该用法是为菜单条目定义依赖关系。如果需要定义多个依赖关系,使用&&
连接彼此。依赖关系将应用到该菜单条目下的其他所有选项。如下两种用法效果一样:
bool "foo" if BAR
default y if BAR
depends on BAR
bool "foo"
default y
6. reverse dependencies: "select" <symbol> ["if" <expr>]