Kconfig的用法 kconfig depends on
以树的形式组织的,而且每个选项都有其自己的依赖关系。这些依赖关系决定了选项是否是可见的。父选项可见,子选项才能可见。
类型定义:"bool"/"tristate"/"string"/"hex"/"int"(bool:布尔类型,tristate三态:内建、模块、移除,string:字符串,hex:十六进制,integer:整型)
每个配置选项都必须指定类型。有两个基本类型:tristate和string,其他类型都是基于这两个基本类型。类型定义可以用输入提示,所以下面的两个例子是等价的:
bool"Networkingsupport"
和
bool
prompt"Networkingsupport"
-输入提示:"prompt"<prompt>["if"<expr>]
每个菜单选项最多只能有一个显示给用户的输入提示。可以用"if"来表示该提示的依赖关系,当然这是
可选的。
-默认值:"default"<expr>["if"<expr>]
一个配置选项可以有任意多个默认值。如果有多个默认值,那么只有第一个被定义的值是可用的。默认值并不是只限于应用在定义他们的菜单选项。这就意味着默认值可以定义在任何地方或被更早的定义覆盖。
如果用户没有设置(通过上面的输入提示),配置选项的值就是默认值。如果可以显示输入提示的话,就会把默认值显示给用户,并可以让用户进行修改。
默认值的依赖关系可以用"if"添加。(可选项)
-依赖关系:"dependson"/"requires"<expr>
为一菜单选项定义依赖关系。如果定义了多个依赖关系,它们之间用'&&'间隔。依赖关系也可以应用到该菜单中所有的其它选项(同样接受一if表达式),所以下面的两个例子是等价的:
bool"foo"ifBAR
defaultyifBAR
and
dependsonBAR
bool"foo"
defaulty
-反向依赖关系:"select"<symbol>["if"<expr>]
尽管普通的依赖关系可以降低一选项的上限,反向依赖能将这一限制降的更低。当前菜单选项的值是symbol的最小值。如果symbol被选择了多次,上限就是其中的最大值。
反向依赖只能用在boolean或tristate选项上。
-数据范围:"range"<symbol><symbol>["if"<expr>]为int和hex类型的选项设置可以接受输入值范围。用户只能输入大于等于第一个symbol,小于等于第二个
symbol的值。
-帮助信息:"help"or"---help---"
定义一帮助信息。帮助信息的结束就由缩进的水平决定的,这也就意味着信息是在第一个比帮助信息开始行
的缩进小的行结束。
"---help---"和"help"在实现的作用上没有区别,"---help---"有助于将文件中的配置逻辑与给开发人员的提示分开。
菜单依赖关系
------------
依赖关系决定了菜单选项是否可见,也可以减少tristate的输入范围。tristate逻辑比boolean逻辑在表
达式中用更多的状态(state)来表示模块的状态。依赖关系表达式的语法如下:
<expr>::=<symbol>(1)
<symbol>'='<symbol>(2)
<symbol>'!='<symbol>(3)
'('<expr>')'(4)
'!'<expr>(5)
<expr>'&&'<expr>(6)
<expr>'||'<expr>(7)
表达式是以优先级的降序列出的。
(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'语句定义,完全由数字、字母和下划线组成(alphanumericcharactersorunderscores)。
不可变的symbol只是表达式的一部分。经常用单引号或双引号括起来。在引号中,可以使用任何字符,使用引号要用转义字符'/'。
菜单结构
--------
菜单在树中的位置可由两种方法决定。第一种可以是这样:
menu"Networkdevicesupport"
dependsNET
configNETDEVICES
...
endmenu
所有的在"menu"..."endmenu"之间都是"Networkdevicesupport"的子菜单。所有的子菜单选项都继承了父菜单的依赖关系,比如,"NET"的依赖关系就被加到了配置选项NETDEVICES的依赖列表中。还有就是通过分析依赖关系生成菜单的结构。如果菜单选项在一定程度上依赖于前面的选项,它就能成为该选项的子菜单。首先,前面的(父)选项必须是依赖列表中的一部分并且它们中必须有满足下面两个条件的选项:
-如果父选项为'n',子选项必须不可见。
-如果父选项可见,子选项才能可见。
configMODULES
bool"Enableloadablemodulesupport"
configMODVERSIONS
bool"Setversioninformationonallmodulesymbols"
dependsMODULES
comment"modulesupportdisabled"
depends!MODULES
MODVERSIONS直接依赖MODULES,这就意味着如果MODULES不为'n',该选项才可见。换句话说,当
MODULES可见时,选项才可见(MODULES的(空)依赖关系也是选项依赖关系的一部分)。
Kconfig语法
------------
配置文件描述了菜单选项,每行都是以一关键字开头(除了帮助信息)。下面的关键字结束一菜单选项:
-config
-menuconfig
-choice/endchoice
-comment
-menu/endmenu
-if/endif
-source
前5个同样可以用在菜单选项定义的开始。
config:
"config"<symbol>
<configoptions>
定义了一配置选项<symbol>并且可以接受任何前面介绍的属性。
menuconfig:
"menuconfig"<symbol>
<configoptions>
此关键字和前面的关键字很相似,但它在前面的基础上要求所有的子选项作为独立的行显示。(Thisis
similartothesimpleconfigentryabove,butitalsogivesahinttofront
ends,thatallsuboptionsshouldbedisplayedasaseparatelistofoptions.)
choices:
"choice"
<choiceoptions>
<choiceblock>
"endchoice"
该关键字定义了一组选择项,并且选项可以是前面描述的任何属性。尽管boolean只允许选择一个配置选项,
tristate可以抒多个配置选项设为'm',但选项只能是boolean或tristate类型。这可以在一个硬件有多
个驱动的情况下使用,最终只有一个驱动被编译进/加载到内核,,但所有的驱动都可以编译成模块。
选项可以接受的另一个选项是"optional",这样选项就被设置为'n',没有被选中的。
comment:
"comment"<prompt>
<commentoptions>
这里定义了在配置过程中显示给用户的注释,该注释还将写进输出文件中。唯一可用的可选项是依赖关系。
menu:
"menu"<prompt>
<menuoptions>
<menublock>
"endmenu"
这里定义了一个菜单,详细信息请看前面的"菜单结构"。唯一可用的可选项是依赖关系。
if:
"if"<expr>
<ifblock>
"endif"
这里定义了if结构。依赖关系<expr>被加到所有在if...endif中的菜单选项中。
choice
prompt"NandFlashCapacityselect"
dependsonMTD
help
EmbedSkyBoardNandFlashCapacityselect
configEmbedSky_64MB_NAND
boolean"64MBNandforEmbedSkyBoard"
dependsonMTD
help
Set64MBNandparts
configEmbedSky_128MB_NAND
boolean"128MBNandforEmbedSkyBoard"
dependsonMTD
help
Set128MBNandparts
configEmbedSky_more_than_256MB_NAND
boolean"256MB~1GBNandforEmbedSkyBoard"
dependsonMTD
help
Set256MB~1GBNandparts
endchoice
更多阅读
的地得的用法 的和地的区别及用法
的地得的用法——简介日常工作中,常会有人提到“的”“地”“得”用法的问题,不少学生对“的、地、得”用法也是含糊不清,乱用一气,作业自然会在“的”“地”“得”用法上出错,并且屡改屡犯。大家都知道,“的”、“地”、“得”这三个字的
眼线膏的用法画出迷人眼线 美宝莲眼线膏
眼线膏的用法画出迷人眼线——简介美眉们一般都习惯用眼线笔来画眼线,今天小编要在这里教大家如何用眼线膏来描画眼线,步骤很简单,想要画好眼妆的美眉们,赶紧准备好工具,跟小编一起来学习吧!眼线膏的用法画出迷人眼线——工具/原料
护发素的用法 护发素发膜的正确用法
护发素的用法——简介护发素可以为头发提供一层保护,或许就因此得名了吧。比起洗发用品,护发素能够令头发看起来更自然和健康。 下面来介绍一下护发素的用法供参考。 护发素的用法——工具/原料护发素护发素的用法——方法/步骤护发
各种化妆刷的用法 如何使用彩妆
各种化妆刷的用法——简介来了解各种化妆刷的用法吧各种化妆刷的用法——方法/步骤各种化妆刷的用法 1、用平头眼影刷沾取少量眼影,从睫毛根部开始徐徐向上淡开,注意层次过渡均匀,刚开始训练以清淡为宜。(精选动物毛的扁平轻薄的刷头可
卫生棉条的用法 短导管卫生棉条的用法
卫生棉条的用法——简介卫生棉棉条,有称卫生栓,简称棉条,是一种棉质的圆柱体,在女性月经来潮时,可置入阴道中吸收经血。一个卫生棉条使用用者,一生中使用的卫生棉条可能超过10,000个。卫生棉条为众多女性提供了极大的便利,但是你知道卫生棉