GNU Makefile依存関係の$(シェル)ログイン率

GNU Makefile依存関係の$(シェル)ログイン率

LatexMkについて知っていますが、それを実行したいコンピュータにインストールできないため、ターゲットが依存するファイルと入力したファイルを含むpdflatexMakefileを作成する必要があります。そのために、次のように書いています。%.pdf%.tex*.tex%.tex

%.pdf : %.tex $(shell perl -lne 'print "$$1\n" if /\\input{([\w-]+\.tex)}/' %.tex)

これで正規表現をテストしましたが、うまく動作しているようですが、%.tex最後に正しく渡されませんでしたmake output.pdf。実行すると、次のような結果が出ました。

Can't open %.tex: No such file or directory.

どのようにコマンド%.texに渡すことができますか?$(shell)

私はGNU makeを使用しています。

答え1

おそらくあなたが望むものは依存関係をリストするファイルを生成することによってよりよく解決することができ、その後includeMakefile内で生成することができます。これはCとC ++のメイクファイルの一般的なパターンです。

SOURCES=foo.tex bar.tex

all: $(SOURCES:.tex=.pdf)

%.dep: %.tex
    perl -lne 'print "$*.pdf: $$1\n" if /\\input{([\w-]+\.tex)}/' <$< >$@

include $(SOURCES:.tex=.dep)

おすすめの本:前提条件の自動生成生産マニュアルにあります。

関連情報