コンテンツにスキップ

Autotools/aclocal

出典: フリー教科書『ウィキブックス(Wikibooks)』

GNU Aclocal は、GNU Automake の一部であり、Autotools を使用するプロジェクトにおいて aclocal.m4 ファイルを生成・更新するためのツールです。このファイルには、Autoconf が利用するためのマクロ定義が含まれます。

主な役割と特徴

[編集]
  1. マクロの収集
    • Aclocal は、configure.ac(または古い形式の configure.in)で使用されているマクロを解析し、それらに必要な定義を aclocal.m4 にまとめます。
    • aclocal.m4 は、Autoconfconfigure スクリプトを生成する際に使用されます。
  2. 外部マクロの管理
    • マクロ定義は、通常、/usr/share/aclocal またはプロジェクト固有のディレクトリ(例:m4/)に配置されます。
    • Aclocal はこれらのマクロを探し、必要に応じて取り込みます。
  3. aclocal.m4 の生成
    • aclocal.m4 は、Autoconf が参照するマクロを含むファイルで、プロジェクト内に自動的に生成されます。

基本的な使用方法

[編集]

標準コマンド

[編集]

以下のコマンドで aclocal.m4 を生成します:

aclocal

オプション

[編集]
  • -I <ディレクトリ> または --include=<ディレクトリ>
    • カスタムマクロが格納されているディレクトリを指定します。たとえば、プロジェクト内に m4/ ディレクトリがある場合:
    aclocal -I m4
    
  • --verbose
    • 詳細なログを表示します。
  • --force
    • aclocal.m4 を強制的に再生成します。

具体例

[編集]

プロジェクト構成

[編集]

以下のようなファイル構成を持つプロジェクトを考えます:

project/
├── configure.ac
├── Makefile.am
├── m4/
│   └── custom_macro.m4

configure.ac の内容

[編集]
AC_INIT([MyProject], [1.0], [example@example.com])
AM_INIT_AUTOMAKE
AC_PROG_CC

m4/custom_macro.m4 の内容

[編集]

以下のような独自マクロが定義されているとします:

AC_DEFUN([MY_CUSTOM_MACRO], [echo "This is a custom macro!"])

aclocal の実行

[編集]

以下のコマンドを実行して aclocal.m4 を生成します:

aclocal -I m4

これにより、aclocal.m4 ファイルが生成され、configure.acm4/custom_macro.m4 に記載されたマクロが取り込まれます。

自動生成ファイルを使った構成

[編集]

生成された aclocal.m4 を含めて、autoreconf などで構成スクリプトを作成します。

関連ツールとの関係

[編集]
  1. Autoconf
    • Aclocal が生成する aclocal.m4 は、Autoconf によって読み込まれ、configure スクリプトの生成に利用されます。
  2. Automake
    • Automake が Makefile.am を元に Makefile.in を生成する際、aclocal が生成したマクロを参照します。
  3. Libtool
    • Libtool の定義済みマクロを取り込む場合も、Aclocal を利用します。

注意点

[編集]
  1. 依存関係
    • Aclocal は Automake に依存しています。そのため、プロジェクトで Automake を使用していない場合、Aclocal を使用する必要はありません。
  2. カスタムマクロの競合
    • aclocal が複数のディレクトリからマクロを収集する際、同名のマクロが競合することがあります。この場合、明示的にディレクトリ順序を指定する必要があります。
  3. 手動の手間
    • 最近のプロジェクトでは、autoreconf コマンドが一般的で、aclocal を単独で呼び出すことは少なくなっています。

まとめ

[編集]

GNU Aclocal は、Autotools プロジェクトのマクロ管理を効率化するツールです。aclocal.m4 を生成し、Autoconf や Automake の動作を支えます。特に外部マクロやカスタムマクロを使用する際に欠かせないツールであり、構成スクリプトの一部として重要な役割を果たします。ただし、最近では autoreconf が Aclocal を内部的に呼び出すため、直接使用する機会は減少しています。