を使用して、任意のディレクトリツリー(ソース)の内容を処理し、ソースツリーと同じ構造を持つ別のディレクトリツリー(ターゲット) 。任意のディレクトリツリーから別のディレクトリツリーへのファイルの処理
ソースツリーのサブディレクトリには、.md(マークダウンテキスト)で終わるファイルが含まれています。目的は、pandocを使用してソースツリー内の各ファイルのターゲットツリーに.htmlファイルを作成することです。
this threadの次のコードは、同じツリー内のファイルを変換しますが、結果のファイルを別のツリーに配置するように変更する方法はわかりません。
markdown := $(shell find . -name '*.md')
all: $(patsubst %.md, %.pdf, $(markdown))
%.pdf: %.md
pandoc -o [email protected] $<
私は、bashを使用して目的の機能を実装するスクリプトを作成しましたが、makeを使用して同じことをしたいと思います。
私のユースケースでUPDATE
、関与ディレクトリが カレントディレクトリのサブディレクトリです:
ソースディレクトリ、./docs/、いくつかの(ネストされた)サブディレクトリ が含まれています.mdで終わるファイルを含むファイル
宛先ディレクトリ./install/HTML/は、もともとは存在しませんが01 makeプロセスが必要に応じてを構築する必要があります。例えば
ファイル./docs/info/general/foo.mdが変更または追加された場合、makeプロセスは、後にファイル./install/HTML/info/general/foo.htmlを作成する必要がありますそれがまだ存在しない場合はディレクトリ./install/HTML/info/general/を作成します。 、あなたはあまりにも多くの詳細を与えることはありません
SOURCE_DIR := docs
TARGET_DIR := install/HTML
# ----- Get all source file (.md) paths
markdown := $(shell find $(SOURCE_DIR) -name '*.md')
# ----- Strip the source directory and .md suffix
files := $(patsubst $(SOURCE_DIR)/%.md, %, $(markdown))
# ----- Create paths to the target .html files
html := $(patsubst %, $(TARGET_DIR)/%.html, $(files))
all: $(html)
$(TARGET_DIR)/%.html: $(SOURCE_DIR)/%.md
@echo Converting $< into [email protected]
dir=`dirname [email protected]`; \
mkdir --parents $$dir; \
pandoc -o [email protected] $<