autoreconfを使って簡単にビルド環境を作る
前回も軽く触れたけれども、automake/autoconfでビルド環境を作るのは少し面倒な印象があった。
ところが、autoreconfを使うと途中の面倒な作業を大幅に軽減できることがわかったので、メモがてら一連の流れについて書くことにする。
手順
1. ソースコードを用意する
今回は、以下のような簡単なソースコード(hello.c)からhelloという実行バイナリを作成するプロジェクトを作成する。
#include <stdio.h> int main(int argc, char* argv[]) { printf("Hello, world!\n"); return 0; }
2. Makefile.amを用意する
これは手書き。といっても実行ファイルを一つ作るだけの簡単なプロジェクトでは、以下の通り2行で済む。
bin_PROGRAMS = hello hello_SOURCES = hello.c
3. configure.acを用意する
引数なしでautoscanを実行すると、configure.scanが生成されるので、それを編集・リネームしてconfigure.acを得ます。
まず、autoscanを実行してできたconfigure.scanを開くと、以下のようになっています。「(略)」の部分はコメントです。
(略) AC_PREREQ(2.61) AC_INIT([hello], [0.0.1], [hoge@fuga.com]) AC_CONFIG_SRCDIR([hello.c]) AC_CONFIG_HEADER([config.h]) # Checks for programs. AC_PROG_CC (略) AC_CONFIG_FILES([Makefile]) AC_OUTPUT
これを2点修正します。
- AC_INITの行を編集
- AM_INIT_AUTOMAKEの行を追加*1
こんな感じにします。
(略) AC_INIT([hello], [0.0.1], [hoge@fuga.com]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) (略)
追加したら、configure.acとして保存します。
5. あとはいつもどおり
$ ./configure && make $ sudo make install
としてビルド&インストール環境ができました。
ソースコードの増減でMakefile.amを変更したり、チェック項目を増やしてconfigure.acを修正したら、再度autoreconfを実行するだけ。
意外とらくちんなのでした。
さいごに
configure.acに記述するマクロについてはまだまだ不勉強な箇所が多いため、全ての場合においてこんなに簡単にはできませんが、今までせこせこMakefileを作っていたのに比べるとかなり楽できるようになったのではと思います。