automake 构建系统的内部依赖
Internal dependencies for automake build system
我的项目结构如下:
|
|---libs
| |---lib1
| |---lib2
|
|---lib3
和依赖项:
- lib1 依赖于 lib3
- lib3 依赖于 lib2
因此 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
- 无论如何这都是疯狂的。最好假装这一段从未写过。
我的项目结构如下:
|
|---libs
| |---lib1
| |---lib2
|
|---lib3
和依赖项:
- lib1 依赖于 lib3
- lib3 依赖于 lib2
因此 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
- 无论如何这都是疯狂的。最好假装这一段从未写过。