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

时间:2017-03-09 07:19:00

标签: makefile autocomplete

我有一个menuconfig配置的项目,我使用多个* _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

我想过写一个像这样的Makefile:

projects/%/configs/%_defconfig: FORCE
    echo $@

目前唯一有效的是这条规则,我没有自动完成路径:

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

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

1 个答案:

答案 0 :(得分:1)

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

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/
$