便携式等效的GNU使%风格的模式规则

时间:2009-04-20 11:47:01

标签: c makefile portability automake gnu-make

我正在按照Using Check with the Autotools页面上的说明尝试在(当前)小型C项目中构建对单元测试的支持。虽然我使用的是Cgreen而不是Check

我遇到了第9步的问题,这导致automake发出关于使用'%'的警告 - 样式模式规则是GNU make扩展。

特定的制定规则是:

check_%.$(OBJEXT) : $(srcdir)/%.c
    $(COMPILE) -DCHECKING -c -o $@ $^

我想知道是否有一种等效的方法来指定不依赖于gnu make扩展的规则。

2 个答案:

答案 0 :(得分:7)

便携式make规则只能使用不同的后缀,前缀应该相同。

.c.o:
        $(COMPILE) -DCHECKING -c -o $@ $<

然而,后缀不一定以点开头。 (在这种情况下,你必须告诉Automake你的后缀是什么,因为它无法猜测。)例如,如果你将check_showdns.o重命名为showdns_check.o,你可以拥有如下内容:

SUFFIXES = _check.o 
check_libapdns_LDADD        = @CHECK_LIBS@ showdns_check.o
.c_check.o:
        $(COMPILE) -DCHECKING -c -o $@ $<

答案 1 :(得分:-3)

我宁愿尝试禁用警告或忽略它。 GNU make适用于所有相关的类Unix平台;没有实际的理由花时间维护makefile的可移植性。 GNU make在功能方面也优于大多数其他make方言。