GNU Make의 파일 목록에 규칙 적용(또는 GNU Make의 "for" 지시어)

GNU Make의 파일 목록에 규칙 적용(또는 GNU Make의 "for" 지시어)

내 GNU Makefile에는 다음 규칙이 있습니다.

FITXER = fitxa.md

$(FITXER).html: $(FITXER)
    pandoc --from markdown --to html $(FITXER) -o $(FITXER).html

$(FITXER).jpeg: $(FITXER).html
    wkhtmltoimage $(FITXER).html $(FITXER).jpeg

파일 목록에 이 규칙을 적용할 수 있는 방법이 있습니까? 예: (의사 코드에서)

for FITXER in [fitxa.md, a.md, b.md, ...] do

   $(FITXER).html: $(FITXER)
    pandoc --from markdown --to html $(FITXER) -o $(FITXER).html

   $(FITXER).jpeg: $(FITXER).html
    wkhtmltoimage $(FITXER).html $(FITXER).jpeg
endfor

답변1

이 문제에 대한 해결책은 일반적인 빌드 규칙을 정의하는 것입니다.

%.html: %.md
    pandoc --from markdown --to html $< -o $@

%.jpg: %.html
    wkhtmltoimage $< $@

여기에서는 makeMarkdown 파일에서 HTML 파일을 만드는 방법과 HTML 파일에서 JPEG를 만드는 방법을 설명합니다.

이 작업을 완료한 후에는 모든 make사람에게 알리기만 하면 됩니다.산출당신이 찾고 있는 파일:

all: fitxa.jpg a.jpg b.jpg

.PHONY: all

make all요청한 JPEG 파일을 얻는 방법을 알아낼 것입니다.

특정 Markdown 파일을 다르게 처리하기 위해 다른 규칙을 정의할 수도 있습니다.

foo.jpg: foo.md
    # Process foo.md here to build foo.jpg

이러한 특정 규칙은 일반 규칙보다 우선합니다.

관련 정보