web-dev-qa-db-ja.com

Linuxでc ++パッケージをビルドするときのautogen.shの仕事は何ですか

Linux(Ubuntu 16.04)のソースからc/c ++パッケージをインストールするときに一般的なパターンを見ました:

  1. ./autogen.sh
  2. 。/構成、設定
  3. make
  4. インストールする

私はmakemake installを理解し、configureはユーザー設定に基づいてMakefileを作成すると思いますが、autogen.shが必要な理由がわかりません。

誰がそれが何のためにあるのか知っていますか?

10
Elad Weiss

手順:

  1. _autogen.sh_スクリプトは、configureスクリプト(_configure.ac_から、autoconfを使用して)および必要なファイル(_Makefile.in_から_Makefile.am_からautomakeを使用して作成するなど)を生成します。これにはautotoolsがシステムにインストールされている必要があり、ソース管理からプロジェクトをチェックアウトするときに実行する必要があります(configureがチェックインされていない場合)。このステップの出力はソースtarballに含まれるため、ソースtarballをダウンロードするユーザーは通常、このステップをスキップできます。

    これは通常_autoreconf --install_と同等です。 _autogen.sh_ファイルがない場合は、代わりに_autoreconf --install_を実行します。 _autogen.sh_を使用してプロジェクトを継承した場合、_autoreconf --install_を使用できる場合は削除することを検討してください。

  2. configureスクリプトは、Makefileおよびビルドに必要なその他のファイルを生成します。通常、_Makefile.in_は、Makefile(および_config.h.in_が_config.h_を生成する)を生成するためのテンプレートとして使用されます。このプロセスは、sedやawkなど、システムにインストールされている標準ツールのみを使用して行われ、autotoolsをインストールする必要はありません。

  3. makeコマンドはソフトウェアをビルドします。

  4. _make install_コマンドはそれをインストールします。

これらはしばしば異なる時間に実行されるため、これらは異なるステップに分けられます。 _autogen.sh_ステップは、システムにautoconfをインストールし、_configure.ac_に変更を加えることが期待されているため、ソフトウェアを開発している人々によって伝統的に実行されます。エンドユーザーはautotoolsをインストールする必要はありません。

エンドユーザーがソースリリースをダウンロードする代わりにプロジェクトをソース管理からチェックアウトする可能性が高まったため、これらの期待は少し変更されました。

14
Dietrich Epp

これは、autotoolsビルドチェーンを使用してビルドされたプログラム/ライブラリにのみ適用されます。 configureスクリプトによって構成されたファイルを生成します。次に、configureスクリプトが.inファイルに入力し、Makefile.amテンプレートからMakefilesを生成します。最後に、プログラム/ライブラリのコンパイル、リンク、インストールに使用できます。

マルチプラットフォームパッケージへの移行に伴い、徐々に時代遅れになっています。 CMakeやより近代的なツールチェーンは最先端です。

1