Paepoi

Paepoi » C and GLib Tips » Autotools

Autotools

# 最終更新日 2021.02.27

macOS では使えません、brew 等で導入できるそうですが解説しません。
下記は Fedora 33 での利用方法です。

Autotools は configure スクリプトを半自動生成するジェネレータの総称。
細かいことはもっと詳しいサイトにまかせてココでは大雑把な使い方を解説。
使い方
何か C 言語のソースを用意。
ココでは katana.c という一つだけのソースと仮定します。

Makefile.am (Makefile を作る雛形)を自力で作る
#
# Makefile.am 雛形の例
# 実行ファイル名を suzuki に指定しただけ
# ソースが複数の場合は空白区切りで指定
#
bin_PROGRAMS = suzuki

suzuki_SOURCES =katana.c

必須なファイルは以上です、ただしコレだけでは警告がウザい。
警告が出ないように必要なファイルを作成、中身は空でも問題無い。
現在は README も必須になったようです。
touch NEWS AUTHORS ChangeLog README

autoscan コマンドを実行し configure.scan を生成
configure.scan を configure.ac にリネーム(or コピー)し必要箇所を書き換える
#
# AC_INIT を書き換え
#AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
#
AC_INIT([suzuki], [1.0.0], [suzuki@katana.jp])
#
# 以下を追記
#
AM_INIT_AUTOMAKE

後は端末でひたすら以下のコマンドを打ち込んでいく
# aclocal.m4を生成
aclocal
# config.h.in を生成
autoheader
# Makefile.in を生成
automake -a -c
# configure スクリプトを生成
autoconf

configure スクリプトが作成されたなら成功。
何かが間違っていたら怒ってくれます、もう一度見直ししましょう。
後は昔よく見た Linux のお約束ができます。
# 実行、Makefile が作成される
./configure
# make コマンドで suzuki という実行ファイルが作成される
make
# インストールすることもできる’
sudo make install
# もちろんアンインストールも
sudo make uninstall

コレを二度手間とか思ってしまったら Linux に向いていない。
tar.xz とかが解りやすい、何故こうなっているか理解できれば素敵。

autogen.sh
上記「後はひたすら〜」以下は常に行う作業なのでスクリプトにまとめる
autogen.sh というファイル名にするのがお約束となっています

以降リビルドは autogen.sh を実行するだけ
これを面倒と思うかどうかはプロジェクトの規模によると思う
autoreconf
autogen.sh の作業さえも自動化するコマンドだと思えばいいようです
ただし初回の Makefile.in は作成しないので初回のみ automake を行う

配布パッケージの作成
# 配布用パッケージを作成
make distcheck
# クリーンアップ
make distclean

Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.