我应该如何从 Makefile.am 运行预构建的 Makefile?

Posted

技术标签:

【中文标题】我应该如何从 Makefile.am 运行预构建的 Makefile?【英文标题】:How should I run a prebuilt Makefile from a Makefile.am? 【发布时间】:2009-10-19 15:41:07 【问题描述】:

我是 automake/autoconf 构建系统的新手。我正在为其实现 autotools 的包有几个库和每个库的测试可执行文件。一些库是自动生成的 ASN1C 代码,带有预构建的 makefile。我不确定在 Makefile.am 中说“使用预构建的 makefile 构建 ASN1C 库”的最佳方式。

由于大量的 makefile 文档,尝试用这样的东西搜索 google 有点困难。

谢谢, 陈兹

【问题讨论】:

【参考方案1】:

这对于完整构建来说相对容易,但对于增量构建来说要困难得多。

库是否支持树外构建也很重要。

要记住的重要一点是 automake 文件可以包含 make 规则,因此您可以创建一组规则来构建库,然后在构建所需的位置添加/复制该构建的输出。

为库构建分配一个目录。编写 make 规则来包装库构建过程。将库构建的输出绑定为构建的依赖项。

我们唯一没有做的是使用默认的 automake 规则进行分发/安装 - 我不确定您如何将库添加到这些列表中,但我认为有一种方法,因为您必须能够在您的发行版中分发随机文件,例如翻译。

增量构建要困难得多,因为您必须在 您的 make 规则中捕获适当的依赖项,以覆盖库 makefile 中的依赖项。

【讨论】:

【参考方案2】:

Automake 手册有a section about this。

【讨论】:

以上是关于我应该如何从 Makefile.am 运行预构建的 Makefile?的主要内容,如果未能解决你的问题,请参考以下文章

如何影响目标的顺序,为 Makefile.am 添加额外的步骤等?

使用 Makefile.am/Makefile.in 在 Ubuntu Linux 中构建 c++ 项目

如何在 Makefile.am 中调整 PATH 变量?

如何使用自动工具构建静态和共享库?

如何在 Makefile.am 中指定我想要 C++0x?

Mono:如何在 Makefile.am 中添加 DLL 引用?