7

我们如何创建一个软件包,以便在解压我们的软件 tar 球后,用户可以执行典型的步骤?

$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install
4

6 回答 6

7

难以理解的 GNU/Autools 的替代方法是 CMake。

http://www.cmake.org/cmake/help/examples.html

例如 KDE 正在使用它。

于 2009-02-21T13:31:47.197 回答
6

查看 GNU autoconf/automake 工具链。这是一个免费的教程/书。

于 2009-02-21T13:28:26.143 回答
4

在过去,这个过程是手工完成的。每个Makefile都是手工编写的(文件make用作一种脚本)。当涉及到可移植性时,这变得有问题,因此编写了configure脚本。./configure脚本也是为每个项目手工编写的。最终,这由 GNU 用他们的autotools包自动完成。这包括autoconf,automake和其他一些。虽然存在替代品,特别是对于makeautotools但使用最广泛。...至少在 GNU/Linux 系统上。替代方案包括已经提到的CMakeBoost.BuildBoost.JamSCons等。

于 2009-02-21T14:08:41.520 回答
1

使用 autotools 创建配置脚本(它将生成最后两个步骤所需的 Makefile),然后制作一个包含所有代码和内容的 tarball。

于 2009-02-21T13:25:50.737 回答
1

rpmbuild 是构建 rpm 包的命令

手册页

教程

于 2009-02-21T13:40:17.173 回答
1

自动工具。

您需要编写一个 configure.ac 和一个 Makefile.am 脚本。

Configure.ac 非常简单,可以通过在源代码上运行“自动扫描”来自动生成。这将生成一个“configure.scan”文件,您需要对其进行调整以生成最终的 configure.ac 文件。

Automake.am 文件完全基于约定。你可能需要类似的东西:

AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \
    -Wfatal-errors -I blah
AM_LDFLAGS = blah

bin_PROGRAMS = mybinary
mybinary_SOURCES = \
    blah.h blah.cc

一切都基于命名模式:

  • dist vs nodist = 是否应该建造
  • inst vs noinst = 是否应该安装
  • 数据 = 数据文件
  • MANS = 手册页
  • 来源 = 源代码

因此 dist_noinst_DATA 用于构建所需但未安装的数据文件。

一旦你拥有了这两个文件,你通常需要运行类似的东西:

aclocal && autoheader && automake --add-missing && autoconf

设置构建所需的 autotools 文件。这可以放在 shell 脚本中并在运行 ./configure 之前运行。

于 2016-07-04T13:28:57.333 回答