我无法找到一种方法来使用 make 为以下类型的生产定义通用模式规则:
require xyzzy-en_US.ext2
from xyzzy.ext0
via xyzzy.ext1
.
这有效:
all: xyzzy-en_US.ext2
# to be compiled from xyzzy.ext0
%.ext1 : %.ext0
# produce xyzzy.ext1
%-en_US.ext2 : %.ext1
# produce xyzzy-en_US.ext2
但是如何概括第二条规则的区域设置部分呢?或者我是否需要为所有不同的区域设置生成规则?
这些都不起作用:
%-??_??.ext2 : %.ext1
# ...
%.ext2 : $(@,%-??_??.ext2,%.ext1)
# ...
使用 Make 没有什么好的方法来做到这一点(正则表达式处理是我的愿望清单中最重要的),但这里有一个拼凑。
您可以为每个区域设置一个单独的规则,该规则适用于任何“事物”(xyzzy 或其他)。但由于您事先不知道将调用什么区域设置,但您确实知道存在哪些 ext0 文件,因此最好为每个“事物”制定规则:
THINGS = $(basename $(wildcard *.ext0)) # xyzzy qrssr...
define TEMPLATE
$(1)-%.ext2: $(1).ext1
@echo produce $$@ from $$^ using $$*
endef
$(foreach thing,$(THINGS),$(eval $(call TEMPLATE,$(thing))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)