Kconfig и выберите, чтобы получить предопределенные и редактируемые конфигурации?
Я хочу предоставить конфигурацию Kconfig / menuconfig для реализации. Я использую цепочку инструментов из Espressif ESP-IDF 3.3, но, похоже, она не связана с цепочкой инструментов. Я хочу иметь минимальный результирующий файл sdkconfig без каких-либо дополнительных "вспомогательных" символов.
Пользователь должен либо использовать (а) предопределенную опцию конфигурации, либо выбрать (б), чтобы установить все значения самостоятельно.
Вот мой текущий код Kconfig:
menu "Test"
choice PREDEFINED
prompt "Select predefined configuration"
default PREDEF_NONE
config PREDEF_NONE
bool "None"
config PREDEF_OPT_A
bool "Option A"
select BOARD_A
select FEATURE_A
config PREDEF_OPT_B
bool "Option B"
select BOARD_B
select FEATURE_B
endchoice
menu "Submenu"
visible if PREDEF_NONE
choice
prompt "Select Board"
config BOARD_A
bool "Board A"
config BOARD_B
bool "Board B"
endchoice
choice
prompt "Select Feature"
config FEATURE_A
bool "Board A"
config FEATURE_B
bool "Board B"
endchoice
endmenu
endmenu
Если выбран предопределенный вариант A, подменю не должно быть видимым (это работает), а итоговый файл sdkconfig, созданный командой make menuconfig с использованием этого файла Kconfig, должен выглядеть следующим образом:
#
# Test
#
CONFIG_PREDEF_NONE=
CONFIG_PREDEF_OPT_A=y
CONFIG_PREDEF_OPT_B=
#
# Submenu
#
CONFIG_BOARD_A=y
CONFIG_BOARD_B=
CONFIG_FEATURE_A=y
CONFIG_FEATURE_B=
но я получаю только первые три строчки
#
# Test
#
CONFIG_PREDEF_NONE=
CONFIG_PREDEF_OPT_A=y
CONFIG_PREDEF_OPT_B=
Когда я выбираю PREDEF_NONE и устанавливаю значения в подменю вручную, все в порядке.
Есть идеи, как действовать, или что здесь не так?
С уважением, Андреас
1 ответ
Это пример:
choice SPI_HOST
prompt "SPI HOST"
default USE_SPI3_HOST
config USE_SPI1_HOST
bool "USE SPI1 HOST"
config USE_SPI2_HOST
bool "USE SPI2 HOST"
config USE_SPI3_HOST
bool "USE SPI3 HOST"
config USE_SPI4_HOST
bool "USE SPI4 HOST"
endchoice
config SPI_HOST
int
default 0 if USE_SPI1_HOST
default 1 if USE_SPI2_HOST
default 2 if USE_SPI3_HOST
default 3 if USE_SPI4_HOST