既知のディレクトリ内の未知のファイルに対する Makefile の依存関係 (DocBook の場合)
-
13-09-2019 - |
質問
ビルドの一部として、複数の HTML ファイル (章ごとに 1 つのファイル) を生成する DocBook ファイルを処理しています。
これらの HTML ファイルを後処理して別の場所にコピーしたいと考えています。これらのファイルは DocBook ソースに依存しますが、事前にファイル名を知ることはできません (ファイル名も DocBook ソースに依存します)。
ファイルがすでに生成されている場合に機能するルールがあります。
www/manual/%.html: build/manual/%.html
postprocess "$<" "$@"
でもどうやって伝えればいいのか分からない make
まだ存在していない場合は生成します。ルールを追加するだけだと www/manual/index.html
, 、すべてではなく、そのファイルのみが後処理されます。
必要だと思います makedepend
DocBook の場合や、気の利いたワイルドカード トリックの場合もあります。これに対する解決策は何でしょうか?
解決
ここでは盲目的に GNU Make を仮定します。そうでない場合は、構文をわずかに変更して同様の手法を適用する必要があります。
私なら、上記のルールに似たルールを使用します。おそらく、 ワイルドカード関数
そして、そのルールを別のサブメイクファイルに入れます。 再帰的に呼び出される
つまり、メインの Makefile で、
build:
# do the docbook processing
$(MAKE) -f htmlprocessmakefile
それ Makefile では、作成された HTML ファイルの完全なリストが表示されます。
他のヒント
あなたが「manual
ディレクトリにまったくファイルは存在しない場合は、それらを生成するためにfooというコマンドを実行します」のようなルールを記述しようとしていますか?
一つの簡単な可能性(私は、高度なメイクファイルの使用状況を知らないとunecessarilyそれを学ぶ時間を投資することを提案していないことを考えるとハックは、)その指定されたfooのコマンドのためになります事前に、だけでなく、そのファイル名を事前に知っています、そしてあなたは、ルールが実行されたかどうかのためにあなたのマーカーとして使用することができます1(おそらく空の)ファイルを作成する。