1

src/apps/myapp/myappautomake ルールの一部として作成しているプログラムがあり、正しく動作しています。

次に、これを Makefile ルールで使用して HTML ファイルを生成します。

.src.html: src/apps/myapp/myapp
    src/apps/myapp/myapp --html $< > /tmp/generated && \
        mv /tmp/generated $@

html: data/src/example.html src/apps/myapp/myapp

これは、実行時にビルドsrc/apps/myapp/myappおよび生成されるdata/src/example.htmlという点で機能します。data/src/example.src

make html

変更するdata/src/example.srcと、正しく再生されdata/src/example.htmlます。

問題は、src/apps/myapp/myapp変更すると再生成されないことdata/src/example.htmlです。また、src/apps/myapp/myappプログラムは HTML ファイルの後にビルドされます (つまり、htmlターゲットの依存関係のみを使用し、.src.htmlルールの依存関係は使用しません)。

アップデート:

GNU Make を使用すると、次のように変更できます。

.src.html: src/apps/myapp/myapp

に:

%.html : %.src src/apps/myapp/myapp

これは意図したとおりに機能しますが、GNU make 拡張機能に依存しています。これをポータブルな方法で行うことはできますか?

4

1 に答える 1

1

サフィックス規則は、追加の前提条件をサポートしていません。POSIX 標準によれば、それらは無視されます。

もちろん、ターゲット/前提条件の関係はいつでも宣言できます。レシピを含むルール内で宣言する必要はありません。

HTML ファイルのリストは表示されませんが、変数 (たとえば$(HTMLFILES)) に HTML ファイルがある場合は、次のように宣言できます。

$(HTMLFILES): src/apps/myapp/myapp

それは機能します(そして移植可能です)。

于 2013-06-09T13:45:45.107 に答える