Makefile 子目录中的Foreach python文件
我把毛巾和这个扔了 我有一个相当成功的makefile,它在子目录中查找文件并将它们作为过滤器传递给pandoc。它在没有空间的路径中工作得很好,但我不能让它在包含空间的路径中工作 以下是MWE:Makefile 子目录中的Foreach python文件,makefile,Makefile,我把毛巾和这个扔了 我有一个相当成功的makefile,它在子目录中查找文件并将它们作为过滤器传递给pandoc。它在没有空间的路径中工作得很好,但我不能让它在包含空间的路径中工作 以下是MWE: BASEDIR=$(CURDIR) STYLEDIR=$(BASEDIR)/style FILFILES := "$(shell find "$(STYLEDIR)" -name *.py)" FILTER := $(foreach "$(FILFILES)", "$(FILFILES)", --fi
BASEDIR=$(CURDIR)
STYLEDIR=$(BASEDIR)/style
FILFILES := "$(shell find "$(STYLEDIR)" -name *.py)"
FILTER := $(foreach "$(FILFILES)", "$(FILFILES)", --filter $(FILFILES))
TEXFLAGS = --filter pandoc-crossref --filter pandoc-citeproc $(FILTER) --latex-engine=xelatex
pdf:
pandoc document.md $(TEXFLAGS)
为了使示例正常工作,您必须在一些带有空格的目录中运行makefile,请尝试此md dir
,创建一个子目录style
,并添加任何.py文件。现在运行,您将看到FILFILES选择正确的python文件,但是foreach将创建三个实例,因此--filter--filter--filter
。为什么呢?我做错了什么
如果您想要完整的makefile:几乎不可能使用包含make空格的单词(包括文件名) 明确地说,make完全忽略所有类型的引用字符(双引号、单引号、后引号) 在某些特定情况下,您可以使用技巧使其工作。但是你没有告诉我们你实际上在做什么;显示如何分配变量
FILFILES
和FILTER
,但不显示如何使用这些变量
如果这些变量只在配方中使用,那么您通常可以使其发挥作用。如果你把它们作为先决条件,那么即使不是不可能,也是非常困难的