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 cp및 as 작업을 사용하여 :표시하겠습니다 ( :작업이 없는 빈 규칙은 작동하지 않으므로 여기에 필요하며 귀하의 경우에는 실행을 위한 작업이 필요하지 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그것도 작동합니다.

관련 정보