2015-10-14 46 views
0

我试图让每个文件夹内的所有文件与Makefile中的变量:的Makefile通配符里面

Test = $(wildcard */) 

install: all 
    @for dir in $(TEST); do \ 
    echo $$dir; \ 
    echo $(wildcard $$dir); \ 
    done 

第一回波输出正确:文件夹1 /文件夹2/folder3 /但在第二回波通配符使用时,我获得空输出(每个文件夹包含许多文件)。 任何建议为什么这不起作用,以及如何将其归档?

回答

1

$(wildcard)使功能,这是在解析生成文件时评估一次。

dir壳可变,只存在当收据被评估(使用壳)。

因为使不知道有关外壳变量,$(wildcard $$dir)图案是由解释让字面上:$$dir

如果要输出dir指向的目录中的文件列表,应该使用shell实用程序。例如。 ls $$dir

+0

我试过'echo $(shell ls $$ dir);'它输出'folder1 /''folder2 /''folder3 /' 你能提供一个例子吗? – user3599444

+0

我需要在'INSTALL'内使用'ls $$ dir'的结果。例如: '$(INSTALL)$(ls $$ dir)$()'。可能吗? – user3599444

+0

试试'$(INSTALL)$$ dir/* $(path)'。 – Tsyvarev