1

pandoc を使用してコンパイルするための最小限のメイクファイルを次に示しmdますpdf。このコマンドは、 ( を使用して) 変更されたファイルをmake watch監視し、変更された場合はトリガーします。mdfswatchmake

SRCS=$(wildcard *.md)
PDFS=$(SRCS:.md=.pdf)

all:    $(PDFS)

%.pdf: %.md
    @pandoc $< -o $@

watch: $(SRCS)
    @fswatch -o $^ | xargs -n1 -I{} make

現在のところ、watchあまり選択的ではありません。ファイルが 1 つだけ変更された場合でも、考えられるすべてのターゲット (.xml 内のすべて)mdがビルドされます。すべてのファイルの変更を監視し、変更されたファイルのみをビルドするこのコードのバージョンが必要です。(これは現在のケースでは無意味だと思いますが、別のより複雑なユースケースでは役に立ちます。)PDFSmdpdf md

4

2 に答える 2

1

以下はうまくいくようです:

@fswatch -0 $^ | xargs -0 -n1 sh -c 'ALT=`basename "$$1"`; make $${ALT/.md/.pdf}' _

$$1/path/to/changed_file.mdによって返されるように識別されfswatchます。いくつかの文字列操作により が得られchanged_file.pdf、これが に供給されmakeます。

于 2016-10-17T00:13:50.977 に答える