tips:how-to-autotools

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
tips:how-to-autotools [2014/10/31 07:08] – [configure 生成] rpptips:how-to-autotools [2023/03/29 15:16] (現在) – 外部編集 127.0.0.1
行 1: 行 1:
 +====== Autotools の使い方 ======
 +
 +===== 概要 =====
 +
 +RPPでは、パッケージの作成のために Autotools を使用しています。
 +
 +Autotools を使用することで、
 +  $ ./configure
 +  $ make
 +  $ make install
 +とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。
 +
 +[[http://ja.wikipedia.org/wiki/Autotools|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 される)にすることで解決。
 +
 +
 +==== configure 生成 ====
 +
 +  $ libtoolize -c -f
 +
 +**%%--copy(-c)%%**
 +
 +シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。
 +
 +**%%--force(-f)%%**\\
 +既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。
 +
 +  $ aclocal
 +  $ autoheader
 +  $ automake -a -c
 +
 +**%%--add-missing(-a)%%**
 +
 +パッケージ化に足りないファイルを自動的に生成。
 +
 +**%%--copy(-c)%%**
 +
 +オプション時にシンボリックリンクではなくコピーする。
 +
 +  $ autoconf
 +
 +上記コマンド群で生成されるファイルの流れは下図参照。
 +
 +{{autotools.svg.png|}}
 +
 +
 +==== 修正時 ====
 +
 +configure.ac などのファイルを修正した場合は、下記コマンドを実行。
 +  $ autoreconf -i -f
 +
 +**%%--install(-i)%%**
 +
 +パッケージ化に足りないファイルを自動的に生成。
 +
 +**%%--force(-f)%%**
 +
 +既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。
 +
 +
 +==== パッケージのコンパイル、インストール方法 ====
 +
 +=== 基本(コンパイル、インストール) ===
 +
 +  $ ./configure
 +  $ make
 +  # make install
 +
 +
 +=== 掃除 ===
 +
 +  $ make clean
 +
 +
 +=== アンインストール ===
 +
 +  # make uninstall
 +
 +
 +=== 配布パッケージ(tarball)作成 ===
 +
 +  $ make dist
 +
 +
 +=== 大掃除 ===
 +
 +  $ make distclean
 +
 +
 +===== パッケージ命名規則 =====
 +
 +[[http://archive.linux.or.jp/JF/JFdocs/Software-Release-Practice-HOWTO.html#s2|Linux JF (Japanese FAQ) Project の解説]]参照。
 +
 +
 +==== プロジェクト名 ====
 +
 +英大文字やアンダースコア"_"は極力使わない。英小文字+ハイフンを推奨。
 +
 +
 +==== バージョン番号 ====
 +
 +メジャー番号、マイナー番号、マイクロ番号(またはパッチ番号)で管理するのが通例。
 +  major.minor.micro
 +または
 +  major.minor.patch
 +
 +この他にも、日付で管理することもある。
 +
 +ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。
 +  current.revision.age
 +
 +[[http://www.bookshelf.jp/texi/libtool/libtool-ja_6.html#SEC35|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