在 Linux 上构建 C++ 程序包时 autogen.sh 的工作是什么
What is the job of autogen.sh when building a c++ package on Linux
我在 Linux (Ubuntu 16.04) 上从源安装 c/c++ 软件包时看到了一个常见模式:
- ./autogen.sh
- ./配置
- 制作
- 进行安装
我理解 make
和 make install
,我猜想 configure
根据用户偏好创建了一个 Makefile,但我不明白为什么 autogen.sh
是必要的。
有人知道它的用途吗?
这仅适用于使用 autotools 构建链构建的程序/库。它生成由 configure
脚本配置的文件。配置脚本然后填充 .in
文件并从 Makefile.am
模板生成 Makefile
s。最终可以用来编译,link和安装程序/库。
随着转向多平台包,它正在慢慢过时。 CMake 和更现代的工具链是最先进的。
步骤:
autogen.sh
脚本生成 configure
脚本(来自 configure.ac
,使用 autoconf)和它需要的任何文件(比如从创建 Makefile.in
Makefile.am
使用 automake)。这需要在您的系统上安装 autotools,并且在从源代码管理检出项目时必须是 运行(如果未检入 configure
)。下载源码压缩包的人通常可以跳过这一步,因为这一步的输出包含在源码压缩包中。
注意这通常等同于autoreconf --install
。如果没有 autogen.sh
文件,则只用 运行 autoreconf --install
代替。如果你已经继承了一个带有autogen.sh
的项目,如果你可以使用autoreconf --install
.
可以考虑删除它
configure
脚本生成 Makefile
和构建所需的其他文件。通常 Makefile.in
用作生成 Makefile
的模板(以及 config.h.in
生成 config.h
)。此过程仅使用系统上安装的标准工具(如 sed 和 awk)进行,不需要安装 autotools。
make
命令构建软件。
make install
命令安装它。
这些被分成不同的步骤,因为它们通常 运行 在不同的时间。 autogen.sh
这一步传统上是由开发软件的人 运行 完成的,因为他们需要在他们的系统上安装 autoconf 并且他们会对 configure.ac
进行更改。最终用户不应安装 autotools。
现在这些期望已经有所改变,因为最终用户更有可能从源代码控制中签出项目,而不是下载源版本。
我在 Linux (Ubuntu 16.04) 上从源安装 c/c++ 软件包时看到了一个常见模式:
- ./autogen.sh
- ./配置
- 制作
- 进行安装
我理解 make
和 make install
,我猜想 configure
根据用户偏好创建了一个 Makefile,但我不明白为什么 autogen.sh
是必要的。
有人知道它的用途吗?
这仅适用于使用 autotools 构建链构建的程序/库。它生成由 configure
脚本配置的文件。配置脚本然后填充 .in
文件并从 Makefile.am
模板生成 Makefile
s。最终可以用来编译,link和安装程序/库。
随着转向多平台包,它正在慢慢过时。 CMake 和更现代的工具链是最先进的。
步骤:
autogen.sh
脚本生成configure
脚本(来自configure.ac
,使用 autoconf)和它需要的任何文件(比如从创建Makefile.in
Makefile.am
使用 automake)。这需要在您的系统上安装 autotools,并且在从源代码管理检出项目时必须是 运行(如果未检入configure
)。下载源码压缩包的人通常可以跳过这一步,因为这一步的输出包含在源码压缩包中。注意这通常等同于
autoreconf --install
。如果没有autogen.sh
文件,则只用 运行autoreconf --install
代替。如果你已经继承了一个带有autogen.sh
的项目,如果你可以使用autoreconf --install
. 可以考虑删除它
configure
脚本生成Makefile
和构建所需的其他文件。通常Makefile.in
用作生成Makefile
的模板(以及config.h.in
生成config.h
)。此过程仅使用系统上安装的标准工具(如 sed 和 awk)进行,不需要安装 autotools。make
命令构建软件。make install
命令安装它。
这些被分成不同的步骤,因为它们通常 运行 在不同的时间。 autogen.sh
这一步传统上是由开发软件的人 运行 完成的,因为他们需要在他们的系统上安装 autoconf 并且他们会对 configure.ac
进行更改。最终用户不应安装 autotools。
现在这些期望已经有所改变,因为最终用户更有可能从源代码控制中签出项目,而不是下载源版本。