我的makefile中有以下目标,可以为我的Android应用生成图标:
base_icon := icon-base.png
Icon-ldpi.png: $(base_icon)
convert $< -resize 36x36 -unsharp 1x4 $@
Icon-mdpi.png: $(base_icon)
convert $< -resize 48x48 -unsharp 1x4 $@
Icon-hdpi.png: $(base_icon)
convert $< -resize 72x72 -unsharp 1x4 $@
Icon-xhdpi.png: $(base_icon)
convert $< -resize 96x96 -unsharp 1x4 $@
Icon-xxhdpi.png: $(base_icon)
convert $< -resize 144x144 -unsharp 1x4 $@
Icon-xxxhdpi.png: $(base_icon)
convert $< -resize 192x192 -unsharp 1x4 $@
icons_android: \
Icon-ldpi.png \
Icon-mdpi.png \
Icon-hdpi.png \
Icon-xhdpi.png \
Icon-xxhdpi.png \
Icon-xxxhdpi.png
如果不反复重复转换说明,我怎样才能使它更优雅?
我正在寻找的是某种参数化目标:
Icon-%.png: $(base_icon)
convert $< -resize $(size) -unsharp 1x4 $@
但我不确定如何查找给定图标的$(size)
。是否有一些我可以在Makefile中定义并在目标中查找的地图?
答案 0 :(得分:1)
尝试以下示例,尽管它并不完美,
base_icon := icon-base.png
define icon_template
Icon-$(1).png: $$(base_icon)
convert $$< -resize $(2) -unsharp 1x4 $$@
icons_android: Icon-$(1).png
endef
$(eval $(call icon_template,ldpi,36x36))
$(eval $(call icon_template,mdpi,48x48))
$(eval $(call icon_template,hdpi,72x72))