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ワイルドカードのオーバーライドに関する明示的なルールを作成します。

asciidoctor私には、またはm4設定がないので、ルールのjustおよびcpasタスクを使用して:表示します(タスク:がない空のルールは機能しないため、ここで必要であり、あなたの場合は実行のためのタスクは必要ありませんm4)。asciidoctor以下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 :バッシュから:

::: 空のコマンドです。

No effect; the command does nothing.

Exit Status:
Always succeeds.

抑制出力は通常どおり使用できます@:trueまたは@trueそれも動作します。

関連情報