我正在搜索一个类似 make 的构建工具,它支持(除了通常的 make 功能之外):
- 自动删除临时创建的文件(例如在 GNU make 中)
- 规则模式中的正则表达式(例如Cook http://miller.emu.id.au/pmiller/software/cook/
关于1:
默认情况下,GNU make 会删除临时文件。例如有这些规则:
%.c: %.y
some-comand
%.o: %.c
some-comand
如果您有一个文件 foo.y 并调用 make foo.o,则 make 必须先创建 foo.c,然后创建 foo.o。准备好后删除临时文件 foo.c。
库克并不支持这一点。
关于2:
使仅支持后缀模式样式规则。例如这样(等效符号):
%.o: %.c
some-comand
.console-命令
在模式规则中允许正则表达式当然更强大。伪代码示例:
foo.+bar.o: foo.+bar.c
some-comand
foo\1bar.o: foo(.+)bar.c
some-comand
如果例如需要 fooXXXbar.o 并且 fooYYYbar.c 存在(或者 make 知道如何创建它),则第一个规则匹配(并且执行其命令)。第二个规则匹配,如果例如需要 fooXXXbar.o 并且 fooXXXbar.c存在。
您知道支持这些功能的构建吗?
除了 GNUMake 之外,我不太熟悉任何构建工具;它不处理正则表达式,但它可以处理这些情况。第二条规则很简单:
foo%bar.o: foo%bar.c
@echo trying to make $@, found $^
第一个需要一些杂凑:
PPP = $(firstword $(filter-out foobar.c, $(wildcard foo*bar.c)))
ifneq ($(PPP),)
foo%bar.o: $(PPP)
@echo found $^
else
WAR = $(warning no match to the regex)
foo%bar.o:
$(WAR)
endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)