GNU/Linux >> Linux の 問題 >  >> Linux

Gnu Make Pattern Ruleでワイルドカードを使用しますか?

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番目のターゲットが呼び出されます 利用可能なファイル。

これらのターゲットの順序は重要です。


Linux
  1. Sed、Awk、またはGrepを使用したマルチラインパターンマッチ?

  2. Grepのみを使用して最初のオカレンスのみを検索しますか?

  3. bash で以前のコマンドの出力を使用する

  1. ワイルドカード ファイル パターンを指定した tar -C

  2. GNU Parallel を使用して rsync を並列化する

  3. sed を使用して特定のパターンを置き換える

  1. GNUScreenを使用するためのLinuxのヒント

  2. Sedを使用してパターンマッチ後に前の行を印刷しますか?

  3. perl-support.vim プラグインを使用して Vim を Perl IDE として作成する