仮定がdoc.pdf
目標です。
次のルールは、doc.pdf
更新時に再生成をトリガーしますが、doc.refer
まったく存在しない場合でも満足します。doc.refer
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > $@
ただし、次のパターンルールは同じことを行いません(PDFを正しく生成しますが、変更時に書き換えをトリガーしませんdoc.refer
)。
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > $@
文字が拡張される前にwildcard
コマンドが実行されるようです。%
この問題をどのように解決できますか?
ベストアンサー1
GNU Makeの機能wildcard
シェルワイルドカードパターンをインポートし、パターンと一致するファイルに展開します。このパターンには%.refer
シェルワイルドカードパターンは含まれていません。
あなたは次のようなものが欲しいかもしれません
%.pdf: %.mom %.refer
pdfmom -e -k < $< > $@
%.pdf: %.mom
pdfmom -e -k < $< > $@
a がある場合、最初の宛先が呼び出され、PDF ファイルが作成されます。.mom
そして.refer
文書のデフォルト名として使用できるファイル。使用可能なファイルが存在しない場合、.refer
2番目のターゲットが呼び出されます。
これらの目標の順序は重要です。