Sortie vers plusieurs files avec Makefile

J'ai un makefile que j'utilise pour convertir des files en markdown en .pdf à travers un model en latex. Pour le moment, cela ne fonctionne qu'avec un file à la fois. Cependant, j'aimerais que le makefile s'exécute sur n'importe quel file de démarque dans le active directory et qu'il soit produit en .pdf avec le même nom avec une seule command make. Par exemple, je pourrais avoir ce qui suit:

Foo.md —> Foo.pdf

Bar.md —> Bar.pdf

Mon makefile actuel est ici:

TEX = pandoc MEXT = md src = template.tex $(wildcard *.$(MEXT)) FLAGS = --latex-engine=xelatex letter.pdf : $(src) $(TEX) $(filter-out $<,$^ ) -o $@ --template=$< $(FLAGS) .PHONY: clean clean : rm output.pdf 

Merci pour tous les conseils …

Essaye ça:

 TEX = pandoc MEXT = md SRC = $(wildcard *.$(MEXT)) PDFS = $(SRC:.md=.pdf) TMP = template.tex FLAGS = --latex-engine=xelatex all: ${PDFS} %.pdf: %.md ${TMP} ${TEX} $(filter-out $<,$^ ) -o $@ --template=${TMP} $(FLAGS) $< .PHONY: clean clean: rm *.pdf 

Je n'ai pas testé cela complètement mais je pense que cela devrait fonctionner avec quelques modifications. Utilisation de la boucle for:

 TEX = pandoc MEXT = md SRC = $(wildcard *.$(MEXT)) TMP = template.tex FLAGS = --latex-engine=xelatex letter.pdf : $(foreach i, $(SRC), $(TEX) -o $(i).pdf --template=$(TMP) $(FLAGS) $(i);) .PHONY: clean clean : rm -f *.pdf 

Notez également que cette solution ne produira pas de files pdf avec exactement le même nom que les files md :

 foo.md -> foo.md.pdf 

Ne devrait pas être difficile à réparer si.