Kconfig - オプションを「選択」

Kconfig - オプションを「選択」

私はLinuxカーネルの設定ツールを使ってKconfig私のプロジェクトの設定を管理しています。

(十分な表現を持った人が「Kconfig」タグやより適切なタグを追加してください)。私の実際のプロジェクトはLinuxカーネルではないので、「linux」または「kernel」でタグ付けしていません。

次の構成を考慮すると:

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ここで潜在的な問題(衝突)を理解することができます。異なる設定変数によって複数のオプションが暗黙的に選択された場合はどうなりますか?

ただし、他のオプションによって暗黙的に1つのオプションのみが選択されている場合、そのオプションの値は変更されません。

たとえば、nconfig/menuconfig/gconfig/xconfigを使用して上記の設定ファイルを開き、SET_A//SET_Bのいずれかを選択しますSET_C。の価値はCHOICEまったく変わっていません。

オプションセットで1つのオプションのみを選択し、別の構成変数が特定の方法で設定されている場合は、そのオプションを特定の値に設定する別の方法はありますか?

答え1

答えることができないので、Ciro Santilliの声明は完全に正確ではありません。

そこに答えを引用すると、次のようになります。

>カーネルドキュメントv4.15によると、ブール以外の値で選択を使用できない

https://github.com/torvalds/linux/blob/v4.15/Documentation/kbuild/kconfig-言語.txt#L104説明する:

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

しかし、この質問は実際にブール値に関するものなので、そのような観点からは可能です。残念ながら、回答を検索している間にこの質問を見つけました。

関連情報