autotools を使用してソース ファイルを構成するというコンテキストで、 aclocalスクリプトとaclocal.m4ファイルのポイントは何ですか? 私が読んだところによると、aclocal は後で automake によって使用されるマクロのマクロ ファイルをスキャンします。このプロセスの詳細はわかりませんが、スキャン機能が automake に組み込まれている可能性があるようです。
3 に答える
Alexandre Duret Lutz の Autotools チュートリアルを参照してください。必読です。
これには、autotools プロジェクトのさまざまなファイルがどのように相互作用するか、およびそれらがどのツールによって使用されるかを説明する図が含まれています: configure
、config.h
、config.status
などaclocal.m4
編集: John Calcote は、 Autotools に関する彼の本の最初の章で、aclocal と aclocal.m4 の目的についても説明しています:第 1 章: GNU Autotools の簡単な紹介:
aclocal ユーティリティは、Autoconf の柔軟性の欠如に対する一時的な回避策として、実際に GNU マニュアルによって文書化されています。Autoconf が最初に設計され、作成され、数年後、Automake のアイデアは Autoconf のアドオンとして考案されました。しかし、Autoconf は、Automake が必要とする規模で拡張できるようには設計されていませんでした。
...
基本的に、aclocal の仕事は、インストールされた Autotool パッケージとユーザー指定の場所からさまざまなマクロ ファイルを統合して aclocal.m4 ファイルを作成し、Autoconf がそれらをすべて 1 か所で見つけられるようにすることです。
...
ただし、両方のツール セットの最新のドキュメントでは、aclocal/acinclude パラダイム全体が廃止され、m4 マクロ ファイルを含むディレクトリを指定する新しい方法が採用されていることが示唆されています。現在の推奨事項は、単に m4 と呼ばれるプロジェクト ディレクトリにディレクトリを作成し (この作成者には acinclude の方が適しているようです)、個々の .m4 ファイルの形式でマクロをこのディレクトリに追加することです。Autoconf が configure.ac ファイルを処理する前に、このディレクトリ内のすべてのファイルが aclocal.m4 に集められます。最終的に、aclocal は Autoconf 自体の機能に置き換えられます。
私のソフトウェアでaclocal.m4
は、ソフトウェアのビルド中に使用するさまざまな非標準の Autoconf マクロを収集します。このようなマクロのセットの 1 つは、1 秒未満のタイミングを処理します。つまり、利用可能なオプションから最適なものを選択します (何が「最適」であるかについての事前に決定された基準に従って)。このような別のマクロ セットは、IBM Informix ESQL/C コンパイル システムが過去 20 年間にわたって進化してきた複雑な部分を扱います (バージョン 5.00 が 1990 年にリリースされた ESQL/C 5.20 を処理し、最新バージョンも処理します)。 IBM Informix ClientSDK 3.50 (2008 年にリリースされたにもかかわらず、ESQL/C 3.50 が含まれているのは非常に残念です)。
したがって、aclocal.m4
必ずしも通常の Autoconf の一部ではないが、特定のソフトウェアで使用されるローカル マクロ用です。