2017-05-27 10 views
0

を使用して、任意のディレクトリツリー(ソース)の内容を処理し、ソースツリーと同じ構造を持つ別のディレクトリツリー(ターゲット) 。任意のディレクトリツリーから別のディレクトリツリーへのファイルの処理

ソースツリーのサブディレクトリには、.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] $< 

答えて

0

ので、私がお勧めすることができ、すべてはこれです::

SOLUTIONは

@マッドサイエンティストのポスト後、私は以下のソリューションを構築することができました

DESTDIR := newdir 

markdown := $(shell find . -name '*.md') 

all: $(patsubst %.md, %.pdf, $(markdown)) 

%.pdf: $(DESTDIR)/%.md 
     pandoc -o [email protected] $< 
関連する問題