Собирать файлы из другой папки - PullRequest
0 голосов
/ 14 октября 2018

Я разработал сценарий для преобразования всех файлов уценок в моей папке в ePub и размещения их в epubs.

Тем не менее я хотел бы поместить свои файлы в подпапку markdowns, а нев главном каталоге (где makefile).

.
├── epubs
│   └── blabla.epubs
├── makefile
└── markdowns
    └── blabla.pd

Как мне изменить мой код?

MARKDOWN=$(shell find . -iname "*.pd")
EPUBS=$(MARKDOWN:.pd=.epub)

.PHONY = all clean
all: $(EPUBS)

%.epub: %.pd
        pandoc --from markdown --to epub --smart $< -o epubs/$@

clean:
        rm epubs/*

1 Ответ

0 голосов
/ 14 октября 2018

Один из подходов заключается в явном указании make в вашем шаблонном правиле, где находятся предпосылки .pd для целей .epub:

MARKDOWN_DIR := markdowns
EPUB_DIR := epubs

MARKDOWNS := $(wildcard $(MARKDOWN_DIR)/*.pd)
EPUBS := $(subst $(MARKDOWN_DIR),$(EPUB_DIR),$(MARKDOWNS:.pd=.epub))

$(EPUB_DIR)/%.epub: $(MARKDOWN_DIR)/%.pd
    pandoc --from markdown --to epub --smart $< -o $@

.PHONY: all clean

all: $(EPUBS)

Обратите внимание на два небольших дополнительных изменения.Я заменил вашу команду оболочки find на функцию make $(wildcard), потому что для этого она и нужна.Ваша команда pandoc больше не нуждается в epubs/ перед $@, потому что этот каталог теперь является частью цели.И я немного переупорядочил по своему вкусу.

...