1 Star 1 Fork 1

lengjing / cbuild

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Kconfig 10.22 KB
一键复制 编辑 原始数据 按行查看 历史
lengjing 提交于 2023-02-11 17:53 . doc: Add English README
# Kconfig语法简介:
#
# https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html
# https://www.kernel.org/doc/html/latest/kbuild/kconfig-macro-language.html
# Kconfig界面一般是使用空格键或回车键改变选项,ESC键返回或退出
# 1. 主菜单语法
#
####################
# mainmenu "主菜单名"
####################
#
# mainmenu标志Kconfig开始,是输入make menuconfig后打开的默认界面
mainmenu "Test Configuration"
# 2. config模块语法
#
#####################
# config 配置项
# 配置项类型 "配置项名"
# 其它选项
#####################
# config 配置项
# 配置项类型
# prompt "配置项名"
# 其它选项
#####################
#
# 配置项: 决定保存在 .config 文件中的键值对的键名(CONFIG_配置项)
# 配置项类型: 决定保存在 .config 文件中的键值对的键值类型,可选的类型有 bool tristate string int hex
# bool : 布尔型,在.config中以 y n 表示
# tristate: 三态型,在.config中以 y n m 表示,内核驱动中: y表示将驱动编译进内核镜像,n表示不编译,m表示将驱动编译为ko形式
# string : 字符串型,在.config中以 "原样" 表示
# int : 数字型(十进制),在.config中以 原样 表示
# hex : 数字型(十六进制),在.config中以 原样 表示
# 配置项名: 显示在界面上的配置项名称,可以和配置项类型合并写,也可以使用关键字 prompt 分开写,prompt 提示最多只有一条有效
# 其它选项: 见子段落说明
config KCONFIG_BOOL_ITEM1
bool "kconfig bool item1 learning"
config KCONFIG_BOOL_ITEM2
bool
prompt "kconfig bool item2 learning"
config KCONFIG_TRISTATE_ITEM
tristate "kconfig tristate item learning"
config KCONFIG_STRING_ITEM
string "kconfig string item learning"
config KCONFIG_INT_ITEM
int "kconfig int item learning"
config KCONFIG_HEX_ITEM
hex "kconfig hex item learning"
# 2.1 依赖项语法
#
#####################
# config 配置项
# 配置项类型 "配置项名"
# depends on 依赖的配置项
#####################
# config 配置项
# 配置项类型 "配置项名"
# visible if 依赖的配置项
#####################
#
# depends on 依赖的配置项设为 y 时,本设置项才会显示,才可以被设置为 y
# visible 条件为真时该设置项才显示,即使不显示也可以被其他设置项 select 将该设置项的值设为 y
config DEPEND_BOOL_ITEM
bool "depends on bool item1 learning"
depends on KCONFIG_BOOL_ITEM1
config DEPEND_STRING_ITEM
string "depends on bool item2 learning"
depends on KCONFIG_BOOL_ITEM2
config DEPEND_AND_ITEM
bool "depends on bool item1 and item2 learning"
depends on (KCONFIG_BOOL_ITEM1 && KCONFIG_BOOL_ITEM2)
config DEPEND_OR_ITEM
bool "depends on bool item1 or item2 learning"
depends on (KCONFIG_BOOL_ITEM1 || KCONFIG_BOOL_ITEM2)
# 2.2 选择项语法
#
#####################
# config 配置项
# bool "配置项名"
# select 选择的配置项
#####################
# config 配置项
# bool "配置项名"
# imply 选择的配置项
#####################
#
# 设置项设置 y 时,select 选择的选项也会设为 y, 且无法修改为 n
# 设置项设置 y 时,imply 选择的选项也会设为 y, 但可以显式修改为 n
config SELECT_BOOL_ITEM1
bool "select bool item1 and item2 learning"
select KCONFIG_BOOL_ITEM1
select KCONFIG_BOOL_ITEM2
config SELECT_BOOL_ITEM2
bool "imply bool item1 learning"
imply KCONFIG_BOOL_ITEM1
# 2.3 默认值语法
#
#####################
# config 配置项
# 配置项类型 "配置项名"
# default 配置项值
#####################
#
# 给配置项默认值
config DEFAULT_BOOL_ITEM
bool "bool item default y learning"
default y
config DEFAULT_STRING_ITEM
string "string item default lengjing learning"
default "lengjing"
config DEFAULT_INT_ITEM
int "int item default 100 learning"
default 100
# 2.4 范围值语法
#
#####################
# config 配置项
# 配置项类型 "配置项名"
# range 值1 值2
#####################
#
# 限制 int 和 hex 类型符号的输出值的范围(含)
config RANGE_INT_ITEM
int "int item range 0~127 learning"
range 0 127
# 2.5 帮助信息语法
#
#####################
# config 配置项
# 配置项类型 "配置项名"
# help
# 帮助信息语句1
# 帮助信息语句2
#####################
#
# 移动到该配置项后,按H键显示帮助信息
config HELP_BOOL_ITEM
bool "item help information learning"
help
This item has help information,
It is a bool item.
# 2.6 注释信息语法
#
#####################
# comment "注释信息"
#####################
#
# 注释信息会在界面显示,配置项名会作为注释写入.config文件中
comment "comment item learning"
# 2.7 表达式语法
#
# if / depends on 可使用表达式语法
# 类型关键字 / prompt / default / select / imply / visible / range 关键字可使用 if 表达式
#####################
# 配置项 : bool 和 tristate 简单转换为相应配置项的值,其他类型转换为 n
# 配置项 = 配置项/值 : 两个配置项相等返回 y,否则返回 n, 还支持: != < <= > >=
# (表达式) : 改变计算优先级
# ! 表达式 : 逻辑非
# 表达式 && 表达式 : 逻辑与
# 表达式 || 表达式 : 逻辑或
#####################
# 3. menu模块语法
#
#####################
# menu "配置项名"
# 其它选项
#
# 子配置模块1
#
# ...
#
# 子配置模块n
#
# endmenu
#####################
#
# 移动到menu配置项后,按回车键可以进入子菜单界面
# menu配置项名会在.config中作为注释写入
menu "menu item learning"
config MENU_BOOL_SUBITEM
bool "bool subitem in menu learning"
config MENU_STRING_SUBITEM
string "string subitem in menu learning"
endmenu
# 4. menuconfig模块语法
#
#####################
# menuconfig 配置项
# bool "配置项名"
# 其它选项
#
# if 配置项
#
# 子配置模块1
#
# ...
#
# 子配置模块n
#
# endif
#####################
#
# 配置项名可以和配置项类型合并写,也可以使用关键字 prompt 分开写
# 空格键选中menuconfig配置项后,按回车键可以进入子菜单界面
menuconfig MENUCONFIG_ITEM
bool "menuconfig item learning"
if MENUCONFIG_ITEM
config MENUCONFIG_BOOL_SUBITEM
bool "bool subitem in menuconfig learning"
config MENUCONFIG_STRING_SUBITEM
string "string subitem in menuconfig learning"
endif
# 5. choice模块语法
#
#####################
# choice 配置项
# prompt "配置项名"
# 其它选项
#
# bool子配置模块1
#
# ...
#
# bool子配置模块n
#
# endchoice
#####################
#
# 移动到choice配置项后,按回车键可以进入子菜单界面,只能选中其中一个选项
choice CHOICE_ITEM
prompt "choice item learning"
default CHOICE_SUBITEM2
config CHOICE_SUBITEM1
bool "choice subitem1"
config CHOICE_SUBITEM2
bool "choice subitem2"
endchoice
# 6. 包含其他Kconfig配置
#
#####################
# source "Kconfig文件路径名"
#####################
#
# Kconfig文件中source子Kconfig文件的相对路径默认是mconf/conf运行时的路径,而不是当前Kconfig文件的路径
# 可以使用srctree修改此默认值,例如 `srctree=路径名 mconf 顶层Kconfig路径名`
# 7. Kconfig变量和函数
#
# 变量或函数定义
######################
# val := value : 简单扩展变量,读到该行时,它的右边立刻扩展
# val = value : 递归扩展变量,当变量使用时才真正扩展
# val += value : 向变量追加文本,不改变符号的扩展属性
######################
#
# 调用变量
######################
# $(val) : 调用变量
######################
#
# 调用函数
######################
# $(func,arg1,arg2...) : 调用函数,参数与函数名/参数之间使用逗号隔开,逗号之间无空格
######################
#
# 内建函数
######################
# $(shell,command) : 扩展为执行的子命令command的标准输出
# $(info,text) : 发送一段文本text到标准输出
# $(warning-if,condition,text) : 如果条件为真,则发送文本text和当前Kconfig文件名以及行号到错误输出
# $(error-if,condition,text) : 如果条件为真,则发送文本text和当前Kconfig文件名以及行号到错误输出,并立刻终止解析
# $(filename) : 扩展为被解析的文件名
# $(lineno) : 扩展为被解析的行号
#####################
#
# 逗号始终是函数的分隔符,要使用逗号,请使用变量替换
# $(shell, echo hello, world) 是一个错误,因为它传递了两个参数,可以使用下面变量替换的方法
# comma := ,
# $(shell, echo hello$(comma) world)
# 变量不能跨标记扩展(例如一个变量作为range关键字的两个参数); 变量不能扩展为Kconfig中的任何关键字
# 8. Kconfig常用运行参数
#
#####################
# CONF_OPTIONS = $(KCONFIG) \
# --configpath $(CONFIG_PATH) \
# --autoconfigpath $(AUTOCONFIG_PATH) \
# --autoheaderpath $(AUTOHEADER_PATH)
# mconf $(CONF_OPTIONS) : 打开menuconfig菜单
# conf $(CONF_OPTIONS) --silent --syncconfig : 根据当前文件生成conf文件和C的头文件
# conf $(CONF_OPTIONS) --defconfig <conf_name> : 加载conf_name指定的配置到当前配置
# conf $(CONF_OPTIONS) --savedefconfig <conf_name> : 保存当前配置到conf_name指定的配置
#####################
# configpath/autoconfigpath/autoheaderpath 是本工程加的设置参数
# 原始Kconfig工程是通过导出环境变量CONFIG_PATH/AUTOCONFIG_PATH/AUTOHEADER_PATH来设置
# --configpath : 设置".config"文件的保存路径,不设置时是".config"
# --autoconfigpath : 设置"auto.conf"文件的保存路径,不设置时是"include/config/auto.conf"
# 注意指定此项的值时请指定一个带文件夹路径的值,它会在这个文件夹下生成一系列的以配置项作为文件名的文件
# --autoheaderpath : 设置"autoconf.h"文件的保存路径,不设置时是"include/generated/autoconf.h"
C
1
https://gitee.com/lengjingzju/cbuild.git
git@gitee.com:lengjingzju/cbuild.git
lengjingzju
cbuild
cbuild
main

搜索帮助