0

Makeに、同じターゲットを作成する複数の(独立した)方法をサポートする方法があるかどうか知りたいです。たとえば、svg_src(SVG画像を含む)とagr_src(xmgraceプロットを含む)の2つのソースディレクトリがあるとします。ソースが何であるかを気にする必要がないように、ルールを記述できるようにしたいと思います。

pdf_out/%.pdf : svg_src/%.svg
    rsvg-convert -f pdf -o $@ $<

pdf_out/%.eps : agr_src/%.svg
    gracebat -hdevice EPS -hardcopy $@ $<

pdf_out/%.pdf : pdf_out/%.eps
    epstopdf $<

ただし、%.pdf別のオプションを提供するのではなく、2番目のルールが最初のルールを上書きします。

Makeでこれを達成する方法はありますか?

4

1 に答える 1

2

あなたはすでに正しい解決策を提供しました。あなたの仮定とは対照的に、2番目のルールは(ソースディレクトリのために)異なる依存関係を持っているため、最初のルールを上書きしません。

次の例を考えてみましょう。ここでは、Makefileとディレクトリ構造をa.svgsvg_srcとagr_srcで使用していますb.svg

#> make -n pdf_out/a.pdf pdf_out/b.pdf
rsvg-convert -f pdf -o pdf_out/a.pdf svg_src/a.svg
gracebat -hdevice EPS -hardcopy pdf_out/b.eps agr_src/b.svg
epstopdf pdf_out/b.eps
rm pdf_out/b.eps
#>

私は、これはまさにあなたが望むものだと思います。

于 2013-02-26T07:35:14.690 に答える