如何配置使用 Autotools 构建到外部目录的应用程序?

How to configure application which uses Autotools to build to external directory?

我有一个使用 Autotools(Autoconf、Automake 等)的应用程序,它将目标文件和二进制文件构建到项目目录中。这不方便,我想为他们提供单独的目录,例如"build" 目录。 IE。我需要"shadow build"。有人可以建议如何做到这一点吗?

默认情况下,Autotools 支持源外构建,如 in the Automake manual 所述。简而言之,您可以在任何地方创建一个目录,构建结果应该放在该目录中。您将其作为您的工作目录,并从那里 运行 项目的 configure 脚本:

mkdir ~/the_project-build
cd  ~/the_project-build
~/the_project-1.2.3/configure
make
make install

然后所有构建的文件都应该进入您创建的构建树而不是源代码树。如果您愿意,构建树的根目录可以位于项目目录中。

但是请注意,

  1. 该功能同时依赖于Automake和Autoconf。在没有 Automake 的情况下使用 Autoconf 的项目需要一些人工关注才能为它们进行源外构建工作,根据我的经验,此类项目通常不会受到这种关注。

  2. 基于 Autotools 的项目的维护者可以做很多事情来打破源代码之外的构建,所以你不能完全相信 每个 Autotools 项目可以直接用这种方式构建。

  3. 另一方面,Automake 自动提供了一个 'distcheck' 目标来测试源外构建等,因此包维护者有一个工具旨在帮助确保他们的项目确实支持源外构建。这提高了任何给定项目实际执行的可能性。