【问题标题】:Is it possible to convert a choice to an int in Kconfig是否可以在 Kconfig 中将选项转换为 int
【发布时间】:2017-01-05 06:42:45
【问题描述】:

我正在寻找一种将选项转换为 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 经常关闭/打开,我希望它在打开时自动选择架构的默认值。

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

【问题讨论】:

    标签: kbuild


    【解决方案1】:

    这样做:

    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
    

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多