Make
Makefile循環遍歷目錄
我需要為 Makefile 中的多個目錄創建連結。
連結(對於 中的所有文件
./topdir/
)應該從./anotherdir/<file>
到./topdir/<file>
。我試過了:
create-links: ./topdir/*/ @for f in $^; do \ echo "this is my path: [$${f}]" && \ DIR=$(shell basename $${f}) && \ echo "make link from ./anotherdir/$(DIR)" ;\ done
./topdir 中有這些文件
dir1 dir2 file1 file2
f
使用 dirs 及其相對路徑(例如./topdir/dir1
)正確分配。我只需要沒有路徑的目錄名。這是
basename
應該做的。但 DIR 始終為空。為什麼?
$(shell basename $${f})
在執行配方之前由 Make 處理;它不在循環中處理。您需要使用 shell 執行所有內容:@for f in $^; do \ echo "this is my path: [$${f}]" && \ DIR=$$(basename $${f}) && \ echo "make link from ./anotherdir/$(DIR)" ;\ done
或者
@for f in $^; do \ echo "this is my path: [$${f}]" && \ DIR=$${f##*/} && \ echo "make link from ./anotherdir/$(DIR)" ;\ done