是否可以在 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