Make

使用 Makefile 輸出到多個文件

  • August 30, 2018

我有一個makefile,用於通過乳膠模板將markdown中的文件轉換為.pdf。目前,這一次只能處理一個文件。但是,我希望 makefile在活動目錄中的任何markdown 文件上執行,並使用單個 make 命令輸出到具有相同名稱的 .pdf。例如,我可能有以下內容:

Foo.md —> Foo.pdf

條形圖.md —> 條形圖.pdf

我目前的makefile在這裡:

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

感謝您的任何指點…

試試這個:

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

我沒有對此進行完全測試,但我認為它應該進行一些修改。使用 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

另請注意,此解決方案不會生成pdf與文件名稱完全相同的md文件:

foo.md -> foo.md.pdf

不過應該不難修復。

引用自:https://unix.stackexchange.com/questions/291436