Tuesday, September 10, 2019 / Make, SVG, PNG

たくさんある SVG ファイルを一括で PNG に置き換える makefile を書いた件

make の wildcard 指定がわかりづらい。

結論としてはこれ。

%.png : %.svg
    cairosvg  $< -o $@
    #convert -density 72 $< $@

svgfiles:=$(wildcard *.svg)
pngfiles=$(svgfiles:.svg=.png)

default : $(pngfiles)

clean :
    $(RM) *.png

一つだけ変換するならば cairosvg foo.svg -o foo.png のようにすればよい。 大量にある svg ファイルがカレントディレクトリにある場合に上記 Makefile を書いて、make すれば一括で全部 png に変換してくれる。

Android のアプリマニュアルを書いていると app/src/main/res/drawable/ あたりに xml で中身はSVGで記述されたアイコンが入っている。 それを PNG に変換してマニュアルに載せようという算段。 でもよく調べてみると、asciidoctor では PNG の代わりに SVG がそのまま使えるようだ。 (変換不要?!)