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

ただし、intltoolizeを実行するかどうかを検出する派手なautogen.shがある場合は、IT_PROG_INTLTOOLconfigure.acの呼び出しがあるかどうかを検出する可能性があります。私はこれが起こるのを見ましたが、あなたがそうしているとは思いません-私はここでSourceforgeの最新のリビジョンを見ています、そして私はその中に文字列「intltool」を見つけることができません。autogen.shはintltoolと互換性がないと思います。

要するに:

  • 各プロジェクトには、独自のautogen.shを含める必要があります。(ビルドシステムを準備するために必要な唯一のコマンドがautoreconfでない限り。)Gummiはそうではないので、それはバグです。
  • ユニバーサルautogen.shのようなものはありません。既存のものを取得してコピーまたは適合させることができますが、実行する必要のある手順はソースパッケージに完全に依存します。
于 2012-04-28T23:27:04.237 に答える