2009-06-14 4 views
0

ビルドの一部として、複数のHTMLファイル(1つの章につき1つのファイル)を生成するDocBookファイルを処理しています。既知のディレクトリ(DocBook用)の未知のファイルに対するMakefileの依存関係

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

私は、ファイルが既に生成されている場合は作品ソートのルール持っている:

www/manual/%.html: build/manual/%.html 
    postprocess "$<" "[email protected]" 

を彼らはまだ存在しない場合、私は、それらを生成するためにmakeを伝える方法を知りません。 www/manual/index.htmlのルールを追加するだけであれば、そのファイルだけではなく、後処理が行われます。

私はDocBookのためにmakedependが必要かと思っています。これに対する解決策は何ですか?

答えて

1

私は盲目的にGNU Makeと仮定します。もしそうでなければ、わずかに変更された構文で同様の手法を適用すべきである。それは私だったら

、私はおそらくwildcard function

によって生成されたファイルの一覧で、上記のあなたに似たルールを使用すると思います。そして、私は別のサブメイクファイルでそのルールを置くところ、called recursively

あなたのメインのMakefileで、ある

、のMakefileが作成されたHTMLファイルの完全なリストを参照すること


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

0

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

私は高度なメイクファイルの使用法を知らず、不必要にそれを学ぶ時間を投資することを提案していないので、簡単な可能性があります)は、指定されたfooコマンドが、事前に知っているだけでなく、事前にファイル名を知っている(おそらく空の)ファイルを作成し、ルールが実行されたかどうかのマーカーとして使用することができます。

+0

私はindex.htmlの追加ルールを試しましたが、これは予想されますが、明示的に名前が付けられたものだけ他のファイルの後処理をトリガーしません。 – Kornel

+0

私はあなたに2つのルールが必要だと思いました:1)あなたが求めていた世代または前処理のルール。 2)ワイルドカードを使用し、ディレクトリー内のすべてのファイルを後処理する後処理のためのルール。私は、前処理のルールがよく知られているindex.htmlの存在に依存している可能性があることを示唆していました(そして、index.htmlが存在しない場合、ルールはそれを生成し、他のすべてのhtmlファイルも生成する必要があります)。最初のルールを作成するのはなぜですか(変更されていない)2番目のルール(ワイルドカードを使用し、後処理を行います... – ChrisW

+0

...とソート・オブ・ワークス)に影響します。あらかじめ決められた理由により、最初のルールを作成して実行しても2番目のルールの動作が損なわれた場合、2番目のルールを別のメイクファイルで実行するのに違いはありますか? – ChrisW

関連する問題