我是一名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)
但这似乎不起作用。
答案 0 :(得分:2)
您永远不应将库传递给AM_LDFLAGS
,或者一般来说,传递给LDFLAGS
变量。链接编辑器参数是位置的,它们将根据您将它们传递给它的顺序来改变含义。
尽管如此,您应该可以使用AM_LIBADD
和AM_LDADD
。
另一方面,请考虑使用non-recursive automake,尤其是在您开始导入common.mk
之类的情况下。