Makefile来处理文件夹的内容
我有一个文件夹,其中包含一些我想使用pandoc处理的标记文件,并将它们输出到Jekyll站点的另一个文件夹中。我正在尝试使用以下生成文件:Makefile来处理文件夹的内容,makefile,Makefile,我有一个文件夹,其中包含一些我想使用pandoc处理的标记文件,并将它们输出到Jekyll站点的另一个文件夹中。我正在尝试使用以下生成文件: MARKDOWN = $(wildcard *.md) jekyll-build : _posts/$(MARKDOWN) bundle exec jekyll build _posts/%.md : source/%.md pandoc -s -t markdown-citations -o $@ $< 但是,
MARKDOWN = $(wildcard *.md)
jekyll-build : _posts/$(MARKDOWN)
bundle exec jekyll build
_posts/%.md : source/%.md
pandoc -s -t markdown-citations -o $@ $<
但是,make没有查找_posts文件夹的内容,而是查找当前工作目录中的任何*.md文件,其中我有一个index.md文件,然后抱怨找不到_posts/index.md。据我所知,这是模式规则的预期行为,因此我的问题是:如何让make查找源文件夹中的所有现有文件,并在其中每个文件上运行配方?谢谢@Beta。是否有文件证明不允许将路径和变量连接在一起(就像我对path/to/$variable所做的那样)?这是绝对允许的。它只是做不到你想要的。您似乎在想象将字符串前置到变量将导致make遍历该变量中的所有单个单词,并将字符串前置到每个单词。。。事实并非如此。如果变量FOO的值为FOO bar biz,那么pre/$FOO将扩展为pre/FOO bar biz。它不会扩展到pre/foo-pre/bar-pre/biz。Make的工作方式与几乎所有支持变量插值的编程语言的工作方式相同:直接文本替换,
MARKDOWN = $(wildcard source/*.md)
POSTS := $(patsubst source/%,_posts/%, $(MARKDOWN))
jekyll-build : $(POSTS)
...
_posts/%.md : source/%.md
...