Linux(Ubuntu 16.04)のソースからc/c ++パッケージをインストールするときに一般的なパターンを見ました:
私はmake
とmake install
を理解し、configure
はユーザー設定に基づいてMakefileを作成すると思いますが、autogen.sh
が必要な理由がわかりません。
誰がそれが何のためにあるのか知っていますか?
手順:
_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
_を使用できる場合は削除することを検討してください。
configure
スクリプトは、Makefile
およびビルドに必要なその他のファイルを生成します。通常、_Makefile.in
_は、Makefile
(および_config.h.in
_が_config.h
_を生成する)を生成するためのテンプレートとして使用されます。このプロセスは、sedやawkなど、システムにインストールされている標準ツールのみを使用して行われ、autotoolsをインストールする必要はありません。
make
コマンドはソフトウェアをビルドします。
_make install
_コマンドはそれをインストールします。
これらはしばしば異なる時間に実行されるため、これらは異なるステップに分けられます。 _autogen.sh
_ステップは、システムにautoconfをインストールし、_configure.ac
_に変更を加えることが期待されているため、ソフトウェアを開発している人々によって伝統的に実行されます。エンドユーザーはautotoolsをインストールする必要はありません。
エンドユーザーがソースリリースをダウンロードする代わりにプロジェクトをソース管理からチェックアウトする可能性が高まったため、これらの期待は少し変更されました。
これは、autotoolsビルドチェーンを使用してビルドされたプログラム/ライブラリにのみ適用されます。 configure
スクリプトによって構成されたファイルを生成します。次に、configureスクリプトが.in
ファイルに入力し、Makefile.am
テンプレートからMakefile
sを生成します。最後に、プログラム/ライブラリのコンパイル、リンク、インストールに使用できます。
マルチプラットフォームパッケージへの移行に伴い、徐々に時代遅れになっています。 CMakeやより近代的なツールチェーンは最先端です。