Makefile 子目录中的Foreach python文件

Makefile 子目录中的Foreach python文件,makefile,Makefile,我把毛巾和这个扔了 我有一个相当成功的makefile,它在子目录中查找文件并将它们作为过滤器传递给pandoc。它在没有空间的路径中工作得很好,但我不能让它在包含空间的路径中工作 以下是MWE: BASEDIR=$(CURDIR) STYLEDIR=$(BASEDIR)/style FILFILES := "$(shell find "$(STYLEDIR)" -name *.py)" FILTER := $(foreach "$(FILFILES)", "$(FILFILES)", --fi

我把毛巾和这个扔了

我有一个相当成功的makefile,它在子目录中查找文件并将它们作为过滤器传递给pandoc。它在没有空间的路径中工作得很好,但我不能让它在包含空间的路径中工作

以下是MWE:

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
,但不显示如何使用这些变量

如果这些变量只在配方中使用,那么您通常可以使其发挥作用。如果你把它们作为先决条件,那么即使不是不可能,也是非常困难的