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

これらの特定の規則は一般規則よりも優先されます。

関連情報