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
ディレクトリと相対パス(たとえば./topdir/dir1
)の両方を適切に割り当てます。
パスではなくディレクトリ名のみが必要です。これがbasename
行われるべきことです。
ただし、DIRは常に空です。なぜ?
答え1
$(shell basename $${f})
レシピを実行する前にMakeによって処理され、ループでは処理されません。すべてを実行するにはシェルを使用する必要があります。
@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