kconfig语法(二)

参考文章:博客

总体原则:每一个 config 就表示一个配置选项的开始,后面紧跟着的 ARCH_AIROHA 是配置选项的名称,config 下面几行定义了该配置选项的属性:如选项名是什么,依赖什么,选中这个后同时会选择什么等等

一、菜单项

eg:

 config ARCH_AIROHA 
     bool "选项名" 
     depends on ARCH_MULTI_V7 
     select ARM_AMBA 
     default n 
     help 
      Support for Airoha EN7523 SoCs

config —> 选项。
ARCH_AIROHA —> 句柄,可用于控制Makefile,选择编译方式。
bool —> 选择可能:TRUE选中、FALSE不选;选中则编译,不选中则不编译。如果后面选项名字串为空,则表示其不会出现在选择软件列表中。
depends on —> 依赖,后面的选择被选择后,这个选项才能被选。
select —> 当前选项选中后,则select后指定的选项自动被选择。
default—> 缺省配置项。
help—> 帮助信息。

二、类型定义

bool/tristate/string/hex/int

菜单选项可以有多个属性。并不要求这些属性可以用在任何地方。每个配置选项都必须指定类型。

在5种类型中tristatestring 为基本类型,其他类型都是基于这两个基本类型。

  • bool:布尔类型:取值范围为Y/N
config BSP_USING_WDT
	bool "Enable Watchdog Timer"
	select RT_USING_WDT
	default n
  • tristate 三态类型:取值范围为Y/N/M,相较bool类型,tristate类型的菜单项多了编译成内核模块的选项

  • string 字符串:默认菜单选项显示对应字符串。

config RT_CONSOLE_DEVICE_NAME
	string "the device name for console"
	default "uart1"
  • int 整型
config BSP_I2C1_SCL_PIN
	int "I2C1 scl pin number"
	range 1 176
	default 116
  • hex 十六进制
prompt: 输入提示
prompt  [“if” ]
default: 默认值

一个配置选项可以有任意多个默认值。如果有多个默认值,那么只有第一个被定义的值是可用的

depends on/requires: 依赖关系
select: 反向依赖关系
imply: 弱反向依赖关系
visible if: 选项可见
range: 数据范围
help: 帮助信息
菜单依赖关系
菜单结构关系

一个菜单项在菜单树中的位置是通过两种方式确定的。首先,它可以被明确指定:

menu "Network device support"
      depends on NET
    
config NETDEVICES
      ...
    
endmenu

三、KConfig语法

配置文件描述了一系列菜单项,其中每行以关键字开头(帮助文本除外)。下列关键字则作为菜单项结束

  • config
  • menuconfig
  • choice/endchoice
  • comment
  • menu/endmenu
  • if/endif
  • source

上述前五项也作为菜单项定义的开始。

config: 配置项
"config" <symbol>
<config options>
menuconfig: 配置菜单块
menuconfig <symbol>
<config options>
choice/endchoice: 选择组
choice [<symbol>]
<choice options>
<choice block>
endchoice
comment: 注释项
"comment" <prompt>
<comment options>
menu/endmenu: 菜单块
"menu" <prompt>
<menu options>
<menu block>
"endmenu"
if/endif: 条件块
"if" <expr>
<if block>
"endif"
source: 读取项
"source" <prompt>

source条目用于读取另一个Kconfig文件。例如:

// /Config.in文件:
menu "Target options"
    ……………………
endmenu
menu "Build options"
    ……………………
endmenu
source "toolchain/Config.in"
    
// /toolchain/Config.in文件:
menu "Toolchain"
    ……………………
endmenu    
mainmenu: 标题栏
"mainmenu" <prompt>

如果配置程序启用,将被显示在配置程序的标题栏。该语句应该被放在配置文件的开头,所有语句之前。例如在buildroot根目录下config.in文件开头定义了该句

#: 注释

除了上述语法,在源文件行任何地方出现一个未加引号的’#'字符,表示该行的其余部分是一段注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值