是否可以在 Kconfig 中将选择转换为 int
Is it possible to convert a choice to an int in Kconfig
我正在寻找一种将 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
经常打开 off/on,我希望它在打开时自动 select 体系结构的默认值。
我想知道是否有一个我忽略的干净的解决方案。
这样做:
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
我正在寻找一种将 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
经常打开 off/on,我希望它在打开时自动 select 体系结构的默认值。
我想知道是否有一个我忽略的干净的解决方案。
这样做:
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