链接具有多个子项目的公共库

时间:2014-07-18 20:20:29

标签: autotools autoconf

我是一名autotools新手,并拥有如下所示的源代码树:

src/
    ProgA/... and Makefile.am
    ProgB/... and Makefile.am
    ProgC/... and Makefile.am
    ...

所有子项目都使用公共库,比如libcommon,并在每个Makefile.am中单独指定:

progA_LDADD = $(libcommon_LIBS)

请注意,$(libcommon_LIBS)PKG_CHECK_MODULE定义。这很有效。

有没有办法在更高级别指定并适用于所有子项目? 我试图拥有src/common.mk,并将其包含在每个子项目中。在common.mk中,我尝试过:

AM_LDFLAGS = $(libcommon_LIBS)

但这似乎不起作用。

1 个答案:

答案 0 :(得分:2)

您永远不应将库传递给AM_LDFLAGS,或者一般来说,传递给LDFLAGS变量。链接编辑器参数是位置的,它们将根据您将它们传递给它的顺序来改变含义。

尽管如此,您应该可以使用AM_LIBADDAM_LDADD

另一方面,请考虑使用non-recursive automake,尤其是在您开始导入common.mk之类的情况下。