差分
この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
tips:how-to-autotools [2014/07/22 19:11] rpp |
tips:how-to-autotools [2014/10/31 07:08] (現在) rpp [configure 生成] |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ======Autotoolsの使い方====== | + | ====== Autotools の使い方 ====== |
- | == 概要 == | + | ===== 概要 ===== |
RPPでは、パッケージの作成のために Autotools を使用しています。 | RPPでは、パッケージの作成のために Autotools を使用しています。 | ||
Autotools を使用することで、 | Autotools を使用することで、 | ||
- | $ ./configure | + | $ ./configure |
- | $ make | + | $ make |
- | $ make install | + | $ make install |
とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。 | とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。 | ||
- | [http://ja.wikipedia.org/wiki/Autotools Wikipedia の解説]参照。 | + | [[http://ja.wikipedia.org/wiki/Autotools|Wikipedia の解説]]参照。 |
- | == インストール == | ||
- | # apt-get install automake libtool | + | ===== インストール ===== |
- | == 使い方概要 == | + | # apt-get install automake libtool |
- | === 元ファイル準備 === | + | |
+ | |||
+ | ===== 使い方概要 ===== | ||
+ | |||
+ | ==== 元ファイル準備 ==== | ||
configure.ac のテンプレート(configure.scan)生成。 | configure.ac のテンプレート(configure.scan)生成。 | ||
- | $ autoscan | + | $ autoscan |
エディタで configure.ac(configure.scan をベースにする)と Makefile.am をがんばって作成。設定項目はそれなりの数ある。 | エディタで configure.ac(configure.scan をベースにする)と Makefile.am をがんばって作成。設定項目はそれなりの数ある。 | ||
サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、 | サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、 | ||
- | SUBDIRS = include auxlib src ... | + | SUBDIRS = include auxlib src ... |
の順番を依存順(先頭から順に make される)にすることで解決。 | の順番を依存順(先頭から順に make される)にすることで解決。 | ||
- | === configure 生成 === | ||
- | $ libtoolize -c -f | + | ==== configure 生成 ==== |
- | * --copy(-c)オプション<br>シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。 | + | $ libtoolize -c -f |
- | * --force(-f)オプション<br>既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。 | + | **%%--copy(-c)%%** |
- | $ aclocal | + | シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。 |
- | $ autoheader | + | **%%--force(-f)%%**\\ |
+ | 既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。 | ||
- | $ automake -a -c | + | $ aclocal |
+ | $ autoheader | ||
+ | $ automake -a -c | ||
- | * --add-missing(-a)オプション<br>パッケージ化に足りないファイルを自動的に生成。 | + | **%%--add-missing(-a)%%** |
- | * --copy(-c)オプション<br>--add-missing(-a)オプション時にシンボリックリンクではなくコピーする。 | + | パッケージ化に足りないファイルを自動的に生成。 |
- | $ autoconf | + | **%%--copy(-c)%%** |
+ | |||
+ | オプション時にシンボリックリンクではなくコピーする。 | ||
+ | |||
+ | $ autoconf | ||
上記コマンド群で生成されるファイルの流れは下図参照。 | 上記コマンド群で生成されるファイルの流れは下図参照。 | ||
- | [[ファイル:autotools.svg.png]] | + | {{autotools.svg.png|}} |
- | === 修正時 === | + | |
+ | ==== 修正時 ==== | ||
configure.ac などのファイルを修正した場合は、下記コマンドを実行。 | configure.ac などのファイルを修正した場合は、下記コマンドを実行。 | ||
- | $ autoreconf -i -f | + | $ autoreconf -i -f |
- | * --install(-i)オプション<br>パッケージ化に足りないファイルを自動的に生成。 | + | **%%--install(-i)%%** |
- | * --force(-f)オプション<br>既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。 | + | パッケージ化に足りないファイルを自動的に生成。 |
- | === パッケージのコンパイル・インストール方法 === | + | **%%--force(-f)%%** |
- | * 基本(コンパイル・インストール) | + | 既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。 |
- | $ ./configure | + | |
- | $ make | + | |
- | # make install | + | |
- | * 掃除 | ||
- | $ make clean | ||
- | * アンインストール | + | ==== パッケージのコンパイル、インストール方法 ==== |
- | # make uninstall | + | |
- | * 配布パッケージ(tarball)作成 | + | === 基本(コンパイル、インストール) === |
- | $ make dist | + | |
- | * 大掃除 | + | $ ./configure |
- | $ make distclean | + | $ make |
+ | # make install | ||
- | == パッケージ命名規則 == | ||
- | [http://archive.linux.or.jp/JF/JFdocs/Software-Release-Practice-HOWTO.html#s2 Linux JF (Japanese FAQ) Project の解説]参照。 | + | === 掃除 === |
- | === プロジェクト名 === | + | $ 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.micro |
または | または | ||
- | major.minor.patch | + | major.minor.patch |
この他にも、日付で管理することもある。 | この他にも、日付で管理することもある。 | ||
ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。 | ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。 | ||
- | current.revision.age | + | current.revision.age |
- | [http://www.bookshelf.jp/texi/libtool/libtool-ja_6.html#SEC35 Libtool 日本語マニュアル]参照。 | + | [[http://www.bookshelf.jp/texi/libtool/libtool-ja_6.html#SEC35|Libtool 日本語マニュアル]]参照。 |
- | === パッケージ名 === | ||
- | プロジェクト名+ハイフン(-)+バージョン数字列+拡張子 | + | ==== パッケージ名 ==== |
+ | |||
+ | プロジェクト名+ハイフン(-)+バージョン数字列+拡張子 | ||
パッケージ名の例としては、下記のようになる。 | パッケージ名の例としては、下記のようになる。 | ||
- | foobar-1.2.3.tar.gz | + | foobar-1.2.3.tar.gz |
日付で管理する場合の例は下記。 | 日付で管理する場合の例は下記。 | ||
- | foobar-080707.tar.gz | + | foobar-080707.tar.gz |
+ |