差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
index:internal-notice:how-to-autotools [2014/08/28 16:25] – rpp | tips:how-to-autotools [2014/10/30 22:08] – [configure 生成] rpp | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ======Autotoolsの使い方====== | ||
- | ===== 概要 | ||
- | |||
- | RPPでは、パッケージの作成のために Autotools を使用しています。 | ||
- | |||
- | Autotools を使用することで、 | ||
- | $ ./configure | ||
- | $ make | ||
- | $ make install | ||
- | とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。 | ||
- | |||
- | [http:// | ||
- | |||
- | ===== インストール | ||
- | |||
- | # apt-get install automake libtool | ||
- | |||
- | ===== 使い方概要 | ||
- | ==== 元ファイル準備 | ||
- | |||
- | configure.ac のテンプレート(configure.scan)生成。 | ||
- | $ autoscan | ||
- | |||
- | エディタで configure.ac(configure.scan をベースにする)と Makefile.am をがんばって作成。設定項目はそれなりの数ある。 | ||
- | |||
- | サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、 | ||
- | | ||
- | の順番を依存順(先頭から順に make される)にすることで解決。 | ||
- | |||
- | ==== configure 生成 | ||
- | |||
- | $ 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 | ||
- | |||
- | ===== パッケージ命名規則 | ||
- | |||
- | [http:// | ||
- | |||
- | ==== プロジェクト名 | ||
- | |||
- | 英大文字やアンダースコア" | ||
- | |||
- | ==== バージョン番号 | ||
- | |||
- | メジャー番号、マイナー番号、マイクロ番号(またはパッチ番号)で管理するのが通例。\\ | ||
- | | ||
- | または\\ | ||
- | | ||
- | |||
- | この他にも、日付で管理することもある。 | ||
- | |||
- | ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。\\ | ||
- | | ||
- | |||
- | [http:// | ||
- | |||
- | ==== パッケージ名 | ||
- | |||
- | | ||
- | |||
- | パッケージ名の例としては、下記のようになる。\\ | ||
- | | ||
- | |||
- | 日付で管理する場合の例は下記。\\ | ||
- | |