【发布时间】:2014-04-30 10:23:56
【问题描述】:
我想删除 makefile 中重复的配方,如下所示
SHELL := /bin/bash
a_% : a1_% a2_%
cat $^ > $@
b_% : b1_% b2_% %_b3
cat $^ > $@
但是以下方法不起作用。我猜this SO question 中的技巧不适用于模式规则。
SHELL := /bin/bash
a_% : a1_% a2_%
b_% : b1_% b2_% %_b3
a_% b_%:
cat $^ > $@
有什么建议吗? (在我原来的 makefile 中,配方重复发生在 4 个目标中,每个目标需要 3 个替换,所以我无法展开目标)
--编辑-- 我意识到解决此问题的一种方法如下。
CMD1 = cat $^ > $@
a_% : a1_% a2_%
$(CMD1)
b_% : b1_% b2_% %_b3
$(CMD1)
【问题讨论】:
-
没有办法组合模式规则。您能做的最好的事情就是像您所做的那样:对配方使用相同的变量。