Paepoi » C and GLib Tips » Autotools
Autotools
# 最終更新日 2021.02.27
macOS では使えません、brew 等で導入できるそうですが解説しません。
下記は Fedora 33 での利用方法です。
Autotools は configure スクリプトを半自動生成するジェネレータの総称。
細かいことはもっと詳しいサイトにまかせてココでは大雑把な使い方を解説。
ココでは katana.c という一つだけのソースと仮定します。
Makefile.am (Makefile を作る雛形)を自力で作る
必須なファイルは以上です、ただしコレだけでは警告がウザい。
警告が出ないように必要なファイルを作成、中身は空でも問題無い。
現在は README も必須になったようです。
autoscan コマンドを実行し configure.scan を生成
configure.scan を configure.ac にリネーム(or コピー)し必要箇所を書き換える
後は端末でひたすら以下のコマンドを打ち込んでいく
configure スクリプトが作成されたなら成功。
何かが間違っていたら怒ってくれます、もう一度見直ししましょう。
後は昔よく見た Linux のお約束ができます。
コレを二度手間とか思ってしまったら Linux に向いていない。
tar.xz とかが解りやすい、何故こうなっているか理解できれば素敵。
autogen.sh というファイル名にするのがお約束となっています
以降リビルドは autogen.sh を実行するだけ
これを面倒と思うかどうかはプロジェクトの規模によると思う
ただし初回の Makefile.in は作成しないので初回のみ automake を行う
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.