gnu make copy many files to a single locationでのベータ版の回答に基づいて、異なるパスから図をビルド ディレクトリの ./figures/ サブディレクトリにコピーする作業ルールがありました。
ORIG_FILE_DIRS += ..
LOCAL_FILES += figures/myfig.png
DESTDIR := figures
all : $(LOCAL_FILES)
vpath %.png $(ORIG_FILE_DIRS)
$(DESTDIR)/%.png: %.png
mkdir -p $(DESTDIR)
cp $< $@
これは、数字が./でない場合にうまく機能します-たとえば、これを変更して、代替パスからlatex .styファイル(現在の作業ディレクトリに必要なもの)をコピーしようとしました。
ORIG_FILE_DIRS += ..
LOCAL_FILES += mycommon.sty
DESTDIR := ./
all : $(LOCAL_FILES)
vpath %.sty $(ORIG_FILE_DIRS)
$(filter %.sty,$(LOCAL_FILES)) : $(DESTDIR)/%.sty: %.sty
mkdir -p $(DESTDIR)
cp $< $@
(フィルターは、./ に他のいくつかの .sty ファイルがあるため、明示的にしようとする試みです)
これは私に与えます
make: Circular mycommon.sty <- mycommon.sty dependency dropped.
make: Nothing to be done for `all'.
これを解決する方法がわかりません。依存関係の明示的なパスを試しました:
$(filter %.sty,$(LOCAL_FILES)) : $(DESTDIR)/%.sty: ../%.sty
mkdir -p $(DESTDIR)
cp $< $@
ただし、循環依存関係 (../mycommon.sty の場合) が発生します。