tips:how-to-autotools

Autotools の使い方

RPPでは、パッケージの作成のために Autotools を使用しています。

Autotools を使用することで、

$ ./configure
$ make
$ make install

とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。

Wikipedia の解説参照。

# apt-get install automake libtool

configure.ac のテンプレート(configure.scan)生成。

$ autoscan

エディタで configure.ac(configure.scan をベースにする)と Makefile.am をがんばって作成。設定項目はそれなりの数ある。

サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、

SUBDIRS = include auxlib src ...

の順番を依存順(先頭から順に make される)にすることで解決。

$ libtoolize -c -f

--copy(-c)

シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。

--force(-f)
既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。

$ aclocal
$ autoheader
$ automake -a -c

--add-missing(-a)

パッケージ化に足りないファイルを自動的に生成。

--copy(-c)

オプション時にシンボリックリンクではなくコピーする。

$ autoconf

上記コマンド群で生成されるファイルの流れは下図参照。

configure.ac などのファイルを修正した場合は、下記コマンドを実行。

$ autoreconf -i -f

--install(-i)

パッケージ化に足りないファイルを自動的に生成。

--force(-f)

既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。

基本(コンパイル、インストール)

$ ./configure
$ make
# make install

掃除

$ make clean

アンインストール

# make uninstall

配布パッケージ(tarball)作成

$ make dist

大掃除

$ make distclean

英大文字やアンダースコア“_”は極力使わない。英小文字+ハイフンを推奨。

メジャー番号、マイナー番号、マイクロ番号(またはパッチ番号)で管理するのが通例。

major.minor.micro

または

major.minor.patch

この他にも、日付で管理することもある。

ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。

current.revision.age

Libtool 日本語マニュアル参照。

プロジェクト名+ハイフン(-)+バージョン数字列+拡張子

パッケージ名の例としては、下記のようになる。

foobar-1.2.3.tar.gz

日付で管理する場合の例は下記。

foobar-080707.tar.gz
  • tips/how-to-autotools.txt
  • 最終更新: 2023/03/29 15:16
  • by 127.0.0.1