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
Другие вопросы по тегам