根据 Beta 在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 $< $@
如果数字不是 ./,这很好用——例如,修改它以尝试从备用路径复制乳胶 .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)。