3

我正在尝试将 autogen.sh (http://buildconf.brlcad.org/) 与 gummi (http://dev.midnightcoding.org/projects/gummi) 一起使用,这样当我进行更改时,例如配置.ac,我的补丁也不必包含对配置的更改。如果我下载最新版本的 gummi 源,删除 po/Makefile.in.in,放入 autogen.sh,然后运行它,autogen.sh 会成功完成

Preparing the Gummi build system...please wait

Found GNU Autoconf version 2.68
Found GNU Automake version 1.11.1
Found GNU Libtool version 2.4

Automatically preparing build ... done

The Gummi build system is now prepared.  To build here, run:
  ./configure
  make

但不生成 po/Makefile.in.in。但是,如果我运行 intltoolize,则会生成 po/Makefile.in.in。查看 autogen.sh 的源代码表明它有时会运行 intltoolize。这是 autogen.sh 中的错误吗?configure.ac(或其他文件)是否应该告诉 autogen 运行 intltoolize?intltoolize 生成的文件是否应该包含在所有发行版中?

4

1 回答 1

4

是的,如果包使用 intltool,autogen.sh 应该运行 intltoolize。如果没有,那就是一个错误。

顺便说一句,虽然您使用的那个脚本自称为“the”autogen.sh,但实际上并不存在唯一的 autogen.sh。这只是引导脚本的通用名称。我更喜欢只写我自己的,具体到每个项目。它可以像这样简单:

#!/bin/bash
autoreconf --force --install || exit 1
intltoolize --force || exit 1

但是,如果您有一个花哨的 autogen.sh 来检测是否运行 intltoolize,那么它可能会检测到 configure.ac 中是否有调用IT_PROG_INTLTOOL。我已经看到这种情况发生了,但我不认为你的这样做 - 我正在查看 Sourceforge 的最新版本我在其中的任何地方都找不到字符串“intltool”。我会说你的 autogen.sh 与 intltool 不兼容。

简而言之:

  • 每个项目都应该包含自己的 autogen.sh。(除非您准备构建系统所需的唯一命令是 autoreconf。)Gummi 没有,所以这是一个错误。
  • 没有通用的 autogen.sh 这样的东西。您可以获取现有的并复制或调整它,但这完全取决于源包需要采取哪些步骤。
于 2012-04-28T23:27:04.237 回答