Kconfig - “选择”一个选项

Kconfig - “选择”一个选项

我正在使用Linux内核的配置工具Kconfig来管理我自己项目的配置。

(请有足够代表的人添加“Kconfig”标签或任何更合适的标签)。我没有标记为“linux”或“kernel”,因为我的实际项目不是 Linux 内核。

给出以下配置:

mainmenu "Select/choice interaction test"

# Selectable menu granting access to multiple potentially independent config vars
menuconfig MULTICHOICE
        bool "Multichoice"

config MULTICHOICE_A
        bool "A"
        depends on MULTICHOICE

config MULTICHOICE_B
        bool "B"
        depends on MULTICHOICE

config MULTICHOICE_C
        bool "C"
        depends on MULTICHOICE

# Choose exactly one item
choice CHOICE
        prompt "Choice"

config CHOICE_A
        bool "A"

config CHOICE_B
        bool "B"

config CHOICE_C
        bool "C"


endchoice

# Booleans which restrict/select other options from the previous sections

config SET_A
        bool "Select A"
        select CHOICE_A
        select MULTICHOICE
        select MULTICHOICE_A

config SET_B
        bool "Select B"
        select CHOICE_B
        select MULTICHOICE
        select MULTICHOICE_B

config SET_C
        bool "Select C"
        select CHOICE_C
        select MULTICHOICE
        select MULTICHOICE_C

选择中的项目menuconfig按预期工作。但设置的值choice不起作用。

choice我可以理解这里的一个潜在问题(冲突) - 如果其他配置变量隐式选择了多个选项怎么办?

但在只有一个选项被其他选项隐式选择的情况下,该选项的值不会改变。

例如,使用 nconfig/menuconfig/gconfig/xconfig 打开上面的配置文件,然后选择SET_A//SET_B​​ 之一SET_C。的值CHOICE根本没有改变。

是否有其他方法可以确保仅选择一组选项中的一个选项,但如果以特定方式设置其他配置变量,则还可以强制将其设置为某个值?

答案1

由于我无法回复,Ciro Santilli 的说法并不完全正确。

引用那里的答案:

根据> kernel docs v4.15,不可能对非布尔值使用 select

https://github.com/torvalds/linux/blob/v4.15/Documentation/kbuild/kconfig-language.txt#L104说:

- reverse dependencies: "select" <symbol> ["if" <expr>] 
  [...]
  Reverse dependencies can only be used with boolean or tristate symbols.

然而这个问题实际上是关于布尔值的,所以从这个角度来看,应该是可能的。可悲的是,我在寻找答案时发现了这个问题。

相关内容