在Linux上构建c ++包时,autogen.sh的工作是什么

Ela*_*iss 8 c c++ makefile configure

我在Linux上从源代码安装ac/c ++包时看到了一个常见的模式(Ubuntu 16.04):

  1. ./autogen.sh
  2. ./配置
  3. 使
  4. make install

我理解make并且make install,我猜想configure根据用户偏好创建一个Makefile,但我不明白为什么autogen.sh有必要.

有谁知道它的用途是什么?

Die*_*Epp 14

步骤:

  1. autogen.sh脚本生成configure脚本(从configure.ac使用的autoconf)和任何文件,它需要(如创建Makefile.inMakefile.am用automake).这需要在您的系统上安装autotools,并且必须在从源代码管理中签出项目时运行(如果configure未签入).下载源代码压缩包的人通常可以跳过此步骤,因为此步骤的输出包含在源代码压缩包中.

  2. autoreconf --install脚本生成autogen.sh和构建所需的其他文件.通常autoreconf --install用作生成autogen.sh(和autoreconf --install生成configure)的模板.此过程仅使用系统上安装的标准工具(如sed和awk)进行,并且不需要安装自动工具.

  3. Makefile命令构建软件.

  4. Makefile.in命令安装它.

它们分为不同的步骤,因为它们通常在不同的时间运行.Makefile传统上,这一步由正在开发软件的人员运行,因为他们需要在他们的系统上安装autoconf并对其进行更改config.h.in.最终用户不应安装自动工具.

这些期望已经有所改变,因为最终用户更有可能从源代码控制中检查项目而不是下载源代码版本.

  • `autogen.sh` 通常只是 `autoreconf -i` 的包装。有时它是 autoreconf 本身调用的工具的包装。基本上是没有价值的。 (2认同)

Kav*_*our 9

这仅适用于使用 autotools 构建链构建的程序/库。它生成由脚本配置的文件configure。然后,配置脚本填充.in文件并MakefileMakefile.am模板生成 s。最终可以用来编译、链接和安装程序/库。

随着向多平台软件包的迁移,它正在慢慢过时。CMake 和更现代的工具链是最先进的。