2009-04-20 73 views
5

我按照Using Check with the Autotools页面上的说明尝试构建(当前)小型C项目中的单元测试支持。虽然我使用Cgreen而不是CheckGNU make的便携式等效模式规则

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

的特殊化妆的规则是:

check_%.$(OBJEXT) : $(srcdir)/%.c 
    $(COMPILE) -DCHECKING -c -o [email protected] $^ 

我不知道是否有指定此规则不依赖于GNU对make的扩展的等效方式。

回答

7

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

.c.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 

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

SUFFIXES = _check.o 
check_libapdns_LDADD  = @[email protected] showdns_check.o 
.c_check.o: 
     $(COMPILE) -DCHECKING -c -o [email protected] $< 
+0

很棒的建议。解决问题。我结束了使用_test前缀而不是_check。 – Wes 2009-04-21 03:17:03

-2

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

+0

这是真的,但是当主机操作系统提供一个开箱即用的功能时,不需要安装额外的工具。 – Wes 2009-04-20 23:15:00