0

ビルドの一環として、複数の HTML ファイル (章ごとに 1 つのファイル) を生成する DocBook ファイルを処理しています。

これらの HTML ファイルを後処理して、別の場所にコピーしたいと考えています。これらのファイルは DocBook ソースに依存していますが、事前にファイル名を知ることはできません (ファイル名も DocBook ソースに依存しています)。

ファイルが既に生成されている場合、並べ替えが機能するというルールがあります。

www/manual/%.html: build/manual/%.html
   postprocess "$<" "$@"

makeしかし、それらがまだ存在しない場合、それらを生成するように指示する方法がわかりません。のルールを追加するとwww/manual/index.html、すべてではなく、そのファイルのみが後処理されます。

makedependDocBook か、気の利いたワイルドカード トリックが必要だと思います。これに対する解決策は何ですか?

4

2 に答える 2

1

ここでは盲目的に GNU Make を仮定します。そうでない場合は、構文を少し変更して同様の手法を適用する必要があります。

私だったら、おそらくワイルドカード関数によって生成されたファイルリストを使用して、上記のルールに似たルールを使用します

そして、そのルールを別のサブメイクファイルに入れ、再帰的に呼び出します

つまり、メインの Makefile で、


  build:
    # do the docbook processing
    $(MAKE) -f htmlprocessmakefile

そのMakefile には、作成された HTML ファイルの完全なリストが表示されます。

于 2009-06-15T01:50:07.713 に答える
0

「ディレクトリにファイルがまったくない場合はmanual、foo コマンドを実行してファイルを生成する」のようなルールを作成しようとしていますか?

1 つの簡単な可能性 (高度な makefile の使用法を知らず、それを不必要に学習するために時間を費やすことを提案していないことを考えると、ハック) は、その指定された foo コマンドが、事前に知らないファイル名を作成するだけでなく、また、ファイル名が事前にわかっている 1 つの (おそらく空の) ファイルを作成し、ルールが実行されたかどうかのマーカーとして使用することもできます。

于 2009-06-14T02:44:55.360 に答える