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