automake构建系统的内部依赖关系

时间:2015-02-22 11:33:13

标签: autotools automake

我关注项目的结构:

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

依赖项:

  • lib1依赖于lib3
  • lib3依赖于lib2

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

1 个答案:

答案 0 :(得分:0)

如果您坚持使用递归目录结构,则可以使用SUBDIRS变量控制下降顺序。这适用于单独的库和测试目录之类的东西; "递归使得被认为是有害的"全部夸大了案例。但是,在这个的情况下,这是一个很好的建议。你显然意识到这一点 - 它可以做到吗?

顶级Makefile.am使用:

SUBDIRS = libs/lib2 lib3 libs/lib1

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

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