0
我有這樣生成文件VPATH多個SRC目錄
edited/
Betrayal/
index.md
Bloodlines/
cover.jpg
index.md
...
的目錄結構和生成文件等
PANDOC := pandoc
PANDOC_OPTS := -t epub --smart --toc
EBOOK_CONVERT := ebook-convert
MODULES := Betrayal Bloodlines Tempest Exile Sacrifice Inferno Fury Revelation Invincible
SRC_DIR := $(addprefix edited/,$(MODULES))
BUILD_DIR := $(addprefix build/,$(MODULES))
SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.md))
EPUB := $(patsubst edited/%.md,build/%.epub,$(SRC))
MOBI := $(patsubst edited/%.md,build/%.mobi,$(SRC))
vpath %.md $(SRC_DIR)
define make-epub
$1/%.epub: %.md
$(PANDOC) $(PANDOC_OPTS) $$< -o [email protected]
endef
define make-mobi
$1/%.mobi: $1/%.epub
$(EBOOK_CONVERT) $$< [email protected] >/dev/null
endef
.PHONY: all epubs mobis checkdirs clean
all: checkdirs mobis
epubs: $(EPUB)
mobis: $(MOBI)
checkdirs: $(BUILD_DIR)
$(BUILD_DIR):
@mkdir -p [email protected]
clean:
@rm -rfv $(BUILD_DIR)
$(foreach bdir,$(BUILD_DIR),$(eval $(call make-epub,$(bdir))))
$(foreach bdir,$(BUILD_DIR),$(eval $(call make-mobi,$(bdir))))
(我還沒有添加條件語句以測試一個蓋和元數據或通過電子郵件發送加入通過mutt點燃,但這裏來的當前問題)
唯一的問題是如何每個目錄有一個index.md和VPATH方法將始終拉第一個模塊的索引前
pandoc -t epub --smart --toc edited/Betrayal/index.md -o build/Betrayal/index.epub
pandoc -t epub --smart --toc edited/Betrayal/index.md -o build/Bloodlines/index.epub
pandoc -t epub --smart --toc edited/Betrayal/index.md -o build/Tempest/index.epub
pandoc -t epub --smart --toc edited/Betrayal/index.md -o build/Exile/index.epub
...
我可以每個index.md重命名爲像(for d in *; do echo "$d"; cd "$d"; mv index.md "$d".md; cd ..; done)
一切每個文件夾的唯一名稱將工作很好,但我想學習makefile文件的語法和必須有處理不萬噸的src目錄,更優雅的方式遞歸makefile文件。
哇。猜猜我真的在推翻它。謝謝 – roguesith