Вывод в несколько файлов с помощью Makefile

Каким-то образом все было мягко заблокировано. Решение:

$ rfkill unblock all
3
23.06.2016, 01:33
3 ответа
# List files to be made by finding all *.md files and appending.pdf

PDFS := $(patsubst %.md,%.md.pdf,$(wildcard *.md))

# The all rule makes all the PDF files listed
all : $(PDFS)

# This generic rule accepts PDF targets with corresponding Markdown 
# source, and makes them using pandoc
%.md.pdf : %.md
    pandoc --latex-engine=xelatex $< -o $@

# Remove all PDF outputs
clean :
    rm $(PDFS)

# Remove all PDF outputs then build them again
rebuild : clean all
0
27.01.2020, 21:16

Я не тестировал это полностью, но думаю, что он должен работать с некоторыми изменениями . Использование цикла 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

Исправить это несложно.

1
27.01.2020, 21:16

Попробуйте следующее:

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
4
27.01.2020, 21:16

Теги

Похожие вопросы