GNU makefile中的通配符

时间:2011-11-25 12:06:53

标签: makefile markdown gnu

我有许多标记文本格式的文本文件,我想使用GNU make来生成HTML输出。我有这个只使用一个文件的Makefile:

MARKDOWN=markdown2

all: my_article_1242323266.html

%.html: %.markdown
    $(MARKDOWN) $< $@

clean:
    rm -f *html

现在,我想让它使用所有markdown / html文件,但我不想列出Makefile中的所有文件。我尝试了$(wildcard * .html),但它无法正常工作,因为我还没有目录中的“源”文件。怎么做?

3 个答案:

答案 0 :(得分:3)

使用类似这样的东西SOURCES = $(shell find。-name“* .cpp”-print | sort)。这将获得所有cpp文件

答案 1 :(得分:3)

MARKDOWN = markdown2
HTMLS = $(patsubst %.markdown,%.html,$(wildcard *.markdown))

all: $(HTMLS)

%.html: %.markdown
    $(MARKDOWN) $< $@

clean:
    rm -f $(HTMLS)

答案 2 :(得分:1)

感谢v01d,我将他的解决方案修改为:

MARKDOWN=markdown2

SOURCES=$(shell find . -name "*.markdown" | sed 's/markdown/html/')

all: $(SOURCES)

%.html: %.markdown
    $(MARKDOWN) $< $@

clean:
    rm -f *html