2016-11-10 97 views
1

假設有一個包含foo.c,bar.cMakefile的目錄。的Makefile內容是:如何在Make中刪除循環中的文件擴展名?

loop: 
    @for f in $(wildcard *.c) ; do \ 
     echo $$f ; \ 
     echo $(basename $$f); \ 
    done 

運行make打印出以下文字:

bar.c 
bar.c 
foo.c 
foo.c 

我要的是:

bar.c 
bar 
foo.c 
foo 

如此看來,basename在這沒有影響循環。我如何使basename工作?

回答

3

您的迴路不工作使,這是一個bash循環。如果你想類似的行爲在使 EEZE,你可以有

loop: 
    $(foreach f, $(wildcard *.c), \ 
    echo $f; \ 
    echo $(basename $f);) 

甚至

loop: 
    $(foreach f, $(wildcard *.c), \ 
    $(info $f) \ 
    $(info $(basename $f))) 

慶典 Eese(伊塞)的方式來剝離的前綴是:

loop: 
    @for f in $(wildcard *.c) ; do \ 
     echo $$f ; \ 
     echo $${f%.c} ; \ 
    done 
+0

第一碼代碼片段給出錯誤「@echo:not found」。如果'@'被刪除,錯誤消失了。 –

+0

你說得對,我解決了問題 –

相關問題