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

Wes*_*Wes 5 c automake portability makefile gnu-make

我正在按照Autotools页面上的使用检查的指示,试图在(当前)小型C项目中构建对单元测试的支持.虽然我使用的是Cgreen而不是Check.

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

具体的制定规则是:

check_%.$(OBJEXT) : $(srcdir)/%.c
    $(COMPILE) -DCHECKING -c -o $@ $^
Run Code Online (Sandbox Code Playgroud)

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

adl*_*adl 7

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

.c.o:
        $(COMPILE) -DCHECKING -c -o $@ $<
Run Code Online (Sandbox Code Playgroud)

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

SUFFIXES = _check.o 
check_libapdns_LDADD        = @CHECK_LIBS@ showdns_check.o
.c_check.o:
        $(COMPILE) -DCHECKING -c -o $@ $<
Run Code Online (Sandbox Code Playgroud)