5

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

我在执行第 9 步时遇到了问题,这导致 automake 发出关于使用 `%' 样式的模式规则作为 GNU make 扩展的警告。

具体的制作规则是:

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

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

4

2 回答 2

7

可移植的 make 规则只能使用不同的后缀,前缀应该相同。

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

但是,后缀不一定以点开头。(在这种情况下,您必须告诉 Automake 您的后缀是什么,因为它无法猜测。)因此,例如,如果您重命名check_showdns.oshowdns_check.o

SUFFIXES = _check.o 
check_libapdns_LDADD        = @CHECK_LIBS@ showdns_check.o
.c_check.o:
        $(COMPILE) -DCHECKING -c -o $@ $<
于 2009-04-20T15:48:14.603 回答
-3

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

于 2009-04-20T17:03:49.443 回答