2015-10-14 83 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