automake 构建系统的内部依赖

Internal dependencies for automake build system

我的项目结构如下:

|
|---libs
|    |---lib1
|    |---lib2
|
|---lib3

和依赖项:

因此 automake 应该按以下顺序构建库:lib2、lib3、lib1 我的问题是(我知道这个库应该首先重新设计,但假设它不可能):是否可以在 Makefile.am 中定义依赖项,以正确构建这个项目?

如果您坚持使用递归目录结构,则可以使用 SUBDIRS 变量控制下降顺序。这对于单独的库和测试目录之类的东西很好; "Recursive Make Considered Harmful" 包罗万象夸大了情况。不过,在 this 案例中,这是一个合理的建议。你显然意识到了这一点 - 所以可以做到吗?

顶级Makefile.am使用:

SUBDIRS = libs/lib2 lib3 libs/lib1

这个'works' - 但它意味着没有 libs/Makefile.am。因此,如果您将它们全部链接在一起作为一个方便的 (noinst_LTLIBRARIES) 库或已安装的库,您需要在顶层处理它。

理论上,我想您可以添加 libs 作为最后一个目录。但是我怀疑这是否可行,例如 make dist - 无论如何这都是疯狂的。最好假装这一段从未写过。