2017-03-09 103 views
1

我有一个menuconfig配置的项目,为此我使用了几个* _defconfig文件作为默认配置。这些defconfig文件编组每个项目:Makefile自动完成路径(例如defconfig)

/ 
    - projects 
    - projectA 
     - configs 
     - 32bit_defconfig 
     - 64bit_defconfig 
     - foo_defconfig 
    - projectB 
     - configs 
     - 32bit_defconfig 
     - 64bit_defconfig 
     - bar_defconfig 

现在我想有一个makefile,在这里我得到了这些defconfigs自动完成:

$ make projects/pr<TAB> 
projects/projectA 
projects/projectB 

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

projects/%/configs/%_defconfig: FORCE 
    echo [email protected] 

目前,这是工作的唯一的事情就是这个规则,我在那里有路径中没有自动完成:

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

PS:Autocompletion适用于定期制作目标。

回答

0

可以使用通配符这个原因:

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

test: FORCE 
    echo $(DEFCONFIG) 

$(DEFCONFIGS): FORCE 
    $(MAKE) -f tools/make/menuconfig.mk [email protected] 

首先使用被测试,以检查您的通配符是否工作,那么你可以使用自动完成:

$ make <TAB> 
all      default     install_toolchain 
buildroot-menuconfig  FORCE     menuconfig 
clean     install     projects/ 
$ make projects/<TAB> 
92107-110/ BananaPro/ 
$