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