在我的公司,我目前正在从 3rd 方库中创建一个 Debian deb 包。该库是使用 Autotools 构建的。我以前从未与 Autotools 合作过,而且我遇到了一些困难。库源包含 configure.inMakefile.am 文件以及 m4/ 目录。我能够使用以下序列构建库:

aclocal -I m4 -I /usr/share/aclocal
autoheader
libtoolize --automake
automake -a
autoconf
./configure
make

debian/rules 文件中,我想使用 CDBS。我是这样写的:
#!/usr/bin/make -f

include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/autotools.mk

但它不起作用。它提示 configure 文件丢失。这是正确的,因为 Autotools 类希望该文件存在。但它不在那里,有人必须先调用 autoconf 和 friend !

为什么 Autotools CDBS 课不让我调用 autoconf 和 friend ?我该如何规避它?

题外话:

当我使用一个程序时,我不是每次都编译它,我编译一次并重用二进制文件。

当人们安装软件时,他们不会自己编译它,维护者编译一次,人们重复使用二进制包。

当维护者编译包时,他/她不会每次编译都创建configure脚本,上游作者创建一次,维护者可以重用它。

最后一句话是真的吗?因为对我来说似乎 Autotools CDBS 类的作者假设了这样的事情 - 他们假设 configure 存在,并在为不同的架构编译包时重用它。我对吗?

一方面,如果 configure 可以生成,它就不应该出现在任何地方——如果你需要它,你可以从其他文件中生成。另一方面,Autotools CDBS 类的作者一定有某些原因以这种方式而不是另一种方式实现它。

概括:
  • 如何处理上述 Autotools CDBS 类问题?
  • 我多久重新生成一次 configure ? (在一般情况下以及在构建 Debian 软件包时。)
  • 最佳答案

    第一,你太努力了。而不是运行 aclocal && autoheader && 等等,
    你可以只运行 autoreconf。这将确保以正确的顺序调用所有自动工具(并且在手指和大脑上更容易)。其次,一旦您生成了配置脚本,您应该创建一个构建目录并运行“make dist”以获取将用于生成 deb 的 tarball。 tarball 中将包含配置脚本。 (更好的是,只需使用上游生成的 tarball,根本不用担心运行自动工具。)

    关于debian - 我多久运行一次 autoconf?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1043647/

    10-12 13:22