我正在寻找一种方法将选项转换为Kconfig文件中的int。例如,我想要:
config BUFSIZE
int
choice
prompt "choose a buffersize"
depends on FOOBAR
default 10 if FOO
default 15 if BAR
default 20
config SIZE10
bool "10"
depends on !FOO
select BUFSIZE=10
config SIZE15
bool "15"
depends on FOOBAR | BAR
select BUFSIZE=15
config SIZE20
bool "20"
depends on BAR
select BUFSIZE=20
endchoice
当然,您不能将=
与select
一起使用,因此上述方法无效。实际的选择列表有点长且易变,所以我想避免在另一个文件中有一个#ifdef
字符串来将这些字符串转换为整数(这些值在Makefile和C文件中使用。 ..)
我的另一种选择是让BUFSIZE
用户可配置,但这是有问题的,因为我无法很好地限制可能的值。同样,如果我为int
指定默认值,并运行make oldconfig
(之前未定义该值),则会提示我输入值。如果为选项设置了默认值,则它似乎不会提示您使用make oldconfig。这很重要,因为FOOBAR
经常关闭/打开,我希望它在打开时自动选择架构的默认值。
我想知道是否有一个干净的解决方案,我忽略了。
答案 0 :(得分:4)
这样做:
choice
prompt "choose a buffersize"
depends on FOOBAR
config BUFFERSIZE_15
bool "15"
config BUFFERSIZE_20
bool "20"
config BUFFERSIZE_25
bool "25"
endchoice
config BUFSIZE
int
default 10
default 15 if BUFFERSIZE_15
default 20 if BUFFERSIZE_20
default 25 if BUFFERSIZE_25