doc.pdf
を想定します がターゲットです。
次のルールは、doc.pdf
の再生成をトリガーします doc.refer
のときはいつでも は更新されますが、doc.refer
の場合も問題ありません まったく存在しません:
doc.pdf: doc.mom $(wildcard doc.refer)
pdfmom -e -k < $< > [email protected]
ただし、次のパターンルールは同じことを実現しません(PDFは正しく生成されますが、doc.refer
を変更しても再構築はトリガーされません ):
%.pdf: %.mom Makefile $(wildcard %.refer)
pdfmom -e -k < $< > [email protected]
wildcard
のようです コマンドは%
の前に実行されます 文字が展開されます。どうすればこれを回避できますか?
承認された回答:
GNUMake関数wildcard
シェルグロブパターンを取得し、そのパターンに一致するファイルに展開します。パターン%.refer
シェルグロブパターンは含まれていません。
おそらく
のようなものが必要です%.pdf: %.mom %.refer
pdfmom -e -k < $< > [email protected]
%.pdf: %.mom
pdfmom -e -k < $< > [email protected]
.mom
がある場合、最初のターゲットはPDFファイルを作成するために呼び出されます および .refer
ドキュメントのベース名に使用できるファイル。 .refer
がない場合、2番目のターゲットが呼び出されます 利用可能なファイル。
これらのターゲットの順序は重要です。