我正在按照Using Check with the Autotools页面上的说明尝试在(当前)小型C项目中构建对单元测试的支持。虽然我使用的是Cgreen而不是Check。
我遇到了第9步的问题,这导致automake发出关于使用'%'的警告 - 样式模式规则是GNU make扩展。
特定的制定规则是:
check_%.$(OBJEXT) : $(srcdir)/%.c
$(COMPILE) -DCHECKING -c -o $@ $^
我想知道是否有一种等效的方法来指定不依赖于gnu make扩展的规则。
答案 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方言。