在以下 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
覆盖通配符。
我没有你的asciidoctor
或m4
设置,所以我将用 justcp
和 :
as 规则的操作来显示它(:
这里是必要的,因为没有操作的空规则将不起作用,在你的情况下,你将m4
在没有asciidoctor
for 的情况下运行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
也会起作用。