【问题标题】:autogen.sh does not (re)generate po/Makefile.in.inautogen.sh 不会(重新)生成 po/Makefile.in.in
【发布时间】:2012-05-09 03:49:13
【问题描述】:

我正在尝试将 autogen.sh (http://buildconf.brlcad.org/) 与 gummi (http://dev.midnightcoding.org/projects/gummi) 一起使用,这样当我进行更改时,例如,configure.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 生成的文件是否应该包含在所有发行版中?

【问题讨论】:

  • 一般来说,避免包含更改生成文件(如配置)的补丁的最佳方法是将它们保留在版本控制中。

标签: makefile autotools autoreconf


【解决方案1】:

是的,如果包使用 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 here 的最新版本,但我在其中的任何地方都找不到字符串“intltool”。我会说你的 autogen.sh 与 intltool 不兼容。

简而言之:

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

【讨论】:

    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2011-01-31
    • 2011-12-29
    • 1970-01-01
    相关资源
    最近更新 更多