configure.acの編集

configure.acのマクロ編集について

autotoolsによるconfigure.ac編集において、頻出となるマクロ記述について説明しています。


configure.inとconfigure.acについて

autoconf-2.13の頃では「configure.in」からconfigureスクリプトを作成していましたが、autoconf-2.57くらいから「configure.in」よりも「configure.ac」が推奨されています。

※どちらでもautoconfコマンドは実行できますが、今後どうなるか不明のため、最新情報に確認してください。


変数の記述方法

変数の使い方はBシェルと同様です。


VARNAME=value   # 定義
$VARNAME        # 参照

なお、m4マクロでは「[」と「]」で囲うとクオーティングが行われます。

マクロの引数が単純な文字列でない場合 (特殊文字やマクロ引数など)には括る必要があります。


コメントの記述方法

行頭に「dnl」を付加することでコメントと見なされます。

最新のバージョンでは、「#」を付加することで以降がコメントと見なされます。


先頭定型マクロ

AC_PREREQ(VERSION)

configure.acを処理できるautoconfのバージョンを指定します。

ここで指定したバージョン以下のautoconfを使用するとエラーとなります。

必ずconfigure.acファイルの先頭に記述します。


#記述例
AC_PREREQ([2.68])

AC_INIT(PACKAGE, VERSION,[BUG-REPORT], [TARNAME])

AC_INITマクロはautoconf用の初期化マクロです。

configure.acで必須のマクロです。

パッケージの名称・バージョン・バグレポートの送信先メールアドレス・tarアーカイブ名を指定します。


#記述例
AC_INIT([sample], [1.0], [onepointadvice@gmail.com])

AM_INIT_AUTOMAKE([PACKAGE], [VERSION])

AM_INIT_AUTOMAKEはautomake用の初期化マクロです。

automakeコマンドを利用する場合には必須の項目となります。

パッケージの名称とバージョンを指定します。

AC_INITの直後に記述します。


#記述例
AM_INIT_AUTOMAKE([sample],[1.0])

コンパイラ設定マクロ

AC_PROG_CC

Cコンパイラを調べるマクロ。環境変数CCを調べます。環境変数CCが設定されていなければgccを設定します。


#記述例
AC_PROG_CC

AC_CHECK_FUNC(function, [action-if-found], [action-if-not-found])

関数functionの存在をチェックする。


#記述例
AC_CHECK_FUNCS( snprintf )

ファイル出力マクロ

AC_CONFIG_SRCDIR([srcfile.c])

ここで指定したファイルが存在するディレクトリをconfugureスクリプトはソースファイルの配置場所とみなします。

ソースパッケージに含まれるファイルの1つだけを指定します。

プログラムソースをオブジェクトファイル(*.o)とは別のディレクトリに配置している場合などに指定します。


#記述例
AC_CONFIG_SRCDIR([main.c])

AC_CONFIG_HEADERS(FILES,)

プリプロセッサマクロ定義ヘッダを作成するマクロです。

このマクロは第1引数で指定されたヘッダテンプレートを元にプリプロセッサ定義ヘッダを生成します。

automakeを用いる場合はAM_CONFIG_HEADERを用います。


#記述例
AC_CONFIG_HEADER([config.h])

AC_CONFIG_FILES(Files)

AC_CONFIG_FILESマクロではconfigureマクロに生成させるファイルを指定します。

多くの場合、Makefileの作成を指示することになります。

自動生成されていませんので手動で追加します。


#記述例
AC_CONFIG_FILES([makefile
                 src/Makefile])

AC_OUTPUT

AC_OUTPUTマクロはconfigure.acファイルの最下行に記述します。

特に引数はありません。

AC_OUTPUTマクロはconfigureの生成すべきファイル(AC_CONFIG_FILESで指定したファイル)を生成します。


#記述例
AC_OUTPUT


関連ページ