使用Pattern-Rules时,automake无法从`_SOURCES`中推断出`_OBJECTS`

时间:2015-12-15 12:49:10

标签: automake

Automake通常可以从_SOURCES列表中推断出链接所需的对象名称。

以下使用旧式后缀规则的示例有效:

ACLOCAL_AMFLAGS = -I m4

bin_PROGRAMS = testam
testam_SOURCES = testam.c c.asn1

.asn1.c:
    > $@

_

$ rm -f testam && make
/bin/sh ./libtool  --tag=CC   --mode=link gcc  -g -O2   -o testam.exe testam.o c.o
libtool: link: gcc -g -O2 -o testam.exe testam.o c.o

如您所见,automake将文件c.o添加到构建testam所需的对象列表中。

但如果我尝试将规则转换为模式规则,则c.o不会被添加:

%.c: %.asn1
    > $@

_

$ rm -f testam && make
/bin/sh ./libtool  --tag=CC   --mode=link gcc  -g -O2   -o testam.exe testam.o
libtool: link: gcc -g -O2 -o testam.exe testam.o

我必须使用模式规则,因为我的工具实际上有两个输出:%.c %.h: %.asn1

为什么会发生这种情况以及如何显式添加目标文件?我应该使用_DEPENDENCIES_LDADD还是BUILT_SOURCES

更新

Automake的依赖关系跟踪不适用于添加了以下内容的目标文件:

foo_LIBADD: extra1.o extra2.o
生成

.Po个文件,但Makefile不包含这些文件

0 个答案:

没有答案