Linux2.6.x的配置文件kconfig语法(2)

(1) 将symbol赋给表达式。boolean和tristate类型的symbol直接赋给表达式。所有其它类型的symbol
    都赋 'n'。
(2) 如果两个symbol相等,返回'y',否则为'n'。
(3) 如果两个symbol相等,返回'n',否则为'y'。
(4) 返回表达式的值。用于改变优先级。
(5) 返回 (2-/expr/) 的结果。
(6) 返回 min(/expr/,/expr/) 的结果。
(7) 返回 max(/expr/,/expr/) 的结果。

一个表达式的值可以是'n','m'或'y'(或者是计算的结果 0,1,2)。当表达式的值为'm'或'y'的时候,菜
单项才是可见的。

symbol有两种类型:不可变的和可变的。不可变的symbol是最普通的,由'config'语句定义,完全由数字
、字母和下划线组成(alphanumeric characters or underscores)。
不可变的symbol只是表达式的一部分。经常用单引号或双引号括起来。在引号中,可以使用任何字符,使用引
号要用转义字符'/'。

菜单结构
--------

菜单在树中的位置可由两种方法决定。第一种可以是这样:

menu "Network device support"
   depends NET

config NETDEVICES
   ...

endmenu

所有的在"menu" ... "endmenu" 之间都是"Network device support"的子菜单。所有的子菜单选项
都继承了父菜单的依赖关系,比如,"NET"的依赖关系就被加到了配置选项NETDEVICES的依赖列表中。

还有就是通过分析依赖关系生成菜单的结构。如果菜单选项在一定程度上依赖于前面的选项,它就能成为该选
项的子菜单。首先,前面的(父)选项必须是依赖列表中的一部分并且它们中必须有满足下面两个条件的选项:
- 如果父选项为'n',子选项必须不可见。
- 如果父选项可见,子选项才能可见。

config MODULES
   bool "Enable loadable module support"

config MODVERSIONS
   bool "Set version information on all module symbols"
   depends MODULES

comment "module support disabled"
   depends !MODULES

MODVERSIONS 直接依赖 MODULES,这就意味着如果MODULES不为'n',该选项才可见。换句话说,当
MODULES可见时,选项才可见(MODULES的(空)依赖关系也是选项依赖关系的一部分)。

Kconfig 语法
------------

配置文件描述了菜单选项,每行都是以一关键字开头(除了帮助信息)。下面的关键字结束一菜单选项:
- config
- menuconfig
- choice/endchoice
- comment
- menu/endmenu
- if/endif
- source
前5个同样可以用在菜单选项定义的开始。

config:

"config" <symbol>
   <config options>

定义了一配置选项 <symbol> 并且可以接受任何前面介绍的属性。

menuconfig:
   "menuconfig" <symbol>
   <config options>

此关键字和前面的关键字很相似,但它在前面的基础上要求所有的子选项作为独立的行显示。(This is
similar to the simple config entry above, but it also gives a hint to front
ends, that all suboptions should be displayed as a separate list of options.)

choices:

"choice"
   <choice options>
   <choice block>
   "endchoice"

该关键字定义了一组选择项,并且选项可以是前面描述的任何属性。尽管boolean只允许选择一个配置选项,
tristate可以抒多个配置选项设为'm',但选项只能是boolean或tristate类型。这可以在一个硬件有多
个驱动的情况下使用,最终只有一个驱动被编译进/加载到内核,,但所有的驱动都可以编译成模块。
选项可以接受的另一个选项是"optional",这样选项就被设置为'n',没有被选中的。

comment:

"comment" <prompt>
   <comment options>

这里定义了在配置过程中显示给用户的注释,该注释还将写进输出文件中。唯一可用的可选项是依赖关系。

menu:

"menu" <prompt>
   <menu options>
   <menu block>
   "endmenu"

这里定义了一个菜单,详细信息请看前面的"菜单结构"。唯一可用的可选项是依赖关系。

if:

"if" <expr>
   <if block>
   "endif"

这里定义了if结构。依赖关系<expr>被加到所有在if ... endif 中的菜单选项中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwzyfy.html