如何使用 makefile '%' 通配符忽略文件?

如何使用 makefile '%' 通配符忽略文件?

在以下 Makefile 片段中,asciidoctor如果当前文件是“list.html”,我将如何避免运行命令。

%.html: src/%.m4
        @echo $@
        @asciidoctor -s -a linkcss -a stylesheet=plain.css src/$(LATEST).adoc
        @m4 -D__latest=$(LATEST) $< > out/$@

答案1

制定一个明确的规则来list.html覆盖通配符。

我没有你的asciidoctorm4设置,所以我将用 justcp:as 规则的操作来显示它(:这里是必要的,因为没有操作的空规则将不起作用,在你的情况下,你将m4在没有asciidoctorfor 的情况下运行list.html) ,具有以下内容Makefile

list.html:
    : do nothing for $@

%.html: %.m4
    cp $< $@

运行示例:

$ touch x.m4 list.m4
$ make x.html list.html
cp x.m4 x.html
: do nothing for list.html

:是 sh 中的“空命令”。来自help :bash:

:: : 空命令。

No effect; the command does nothing.

Exit Status:
Always succeeds.

可以像往常一样使用 抑制输出@:true或者@true也会起作用。

相关内容