3

我正在寻找一种将选项转换为 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

当然,你不能使用=with select,所以上面的行不通。实际的选择列表有点长且不稳定,所以我想避免#ifdef在另一个文件中有一个字符串来将它们转换为整数(加上这些值在 Makefiles 和 C 文件中使用......)

我的替代方法是让BUFSIZE用户可配置,但这是有问题的,因为我不能很好地限制可能的值。同样,如果我为 , 指定一个默认值int并运行make oldconfig(该值之前未定义),它会提示我输入一个值。如果您为选择设置了默认值,它似乎不会提示您进行 make oldconfig。这很重要,因为FOOBAR它经常关闭/打开,我希望它在打开时自动选择架构的默认值。

我想知道是否有一个我忽略的干净解决方案。

4

1 回答 1

6

像这样做:

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
于 2015-07-24T14:09:43.627 回答