Shell
如何使用 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/$@
為此制定一個明確的規則來
list.html
覆蓋萬用字元。我沒有你的
asciidoctor
orm4
設置,所以我將用 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
也可以。