路径的Makefile自动完成(例如defconfig)

路径的Makefile自动完成(例如defconfig),makefile,autocomplete,Makefile,Autocomplete,我有一个配置为的项目,我使用几个*\u defconfig文件作为默认配置。这些defconfig文件针对每个项目进行分组: / - projects - projectA - configs - 32bit_defconfig - 64bit_defconfig - foo_defconfig - projectB - configs - 32bit_defconfig

我有一个配置为的项目,我使用几个*\u defconfig文件作为默认配置。这些defconfig文件针对每个项目进行分组:

/
  - projects
    - projectA
      - configs
         - 32bit_defconfig
         - 64bit_defconfig
         - foo_defconfig
    - projectB
      - configs
         - 32bit_defconfig
         - 64bit_defconfig
         - bar_defconfig
现在,我想要一个makefile,在这里我可以获得这些DefConfig的自动完成:

$ make projects/pr<TAB>
projects/projectA
projects/projectB
目前唯一有效的是这个规则,我没有路径的自动完成:

# e.g. 'make projects/88000-000/configs/32bit_defconfig'
%_defconfig: FORCE
    $(MAKE) -f tools/make/menuconfig.mk $@

PS:自动完成适用于常规生成目标。

出于以下原因,您可以使用通配符:

DEFCONFIGS=$(wildcard projects/*/configs/*_defconfig)

test: FORCE
    echo $(DEFCONFIG)

$(DEFCONFIGS): FORCE
    $(MAKE) -f tools/make/menuconfig.mk $@
首先使用测试目标检查通配符是否正常工作,然后可以使用自动完成:

$ make <TAB> all default install_toolchain buildroot-menuconfig FORCE menuconfig clean install projects/ $ make projects/<TAB> 92107-110/ BananaPro/ $ $make 所有默认安装工具链 buildroot菜单配置强制菜单配置 清洁安装项目/ $make项目/ 92107-110/班纳帕罗/ $ $ make <TAB> all default install_toolchain buildroot-menuconfig FORCE menuconfig clean install projects/ $ make projects/<TAB> 92107-110/ BananaPro/ $