差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
index:internal-notice:how-to-autotools [2014/08/28 16:23] – rpp | tips:how-to-autotools [2023/03/29 06:16] (現在) – 外部編集 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ======Autotoolsの使い方====== | + | ====== Autotools の使い方 ====== |
- | ===== 概要 | + | ===== 概要 ===== |
RPPでは、パッケージの作成のために Autotools を使用しています。 | RPPでは、パッケージの作成のために Autotools を使用しています。 | ||
行 11: | 行 11: | ||
とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。 | とするだけで、ユーザーの環境に合わせてプログラムをコンパイルできます(もちろん設定すればの話ですが・・・)。また、出力されるログを見れば、何が足りないのかを調べることができます。 | ||
- | [http:// | + | [[http:// |
- | ===== インストール | + | |
+ | ===== インストール ===== | ||
# apt-get install automake libtool | # apt-get install automake libtool | ||
- | ===== 使い方概要 | + | |
- | ==== 元ファイル準備 | + | ===== 使い方概要 ===== |
+ | |||
+ | ==== 元ファイル準備 ==== | ||
configure.ac のテンプレート(configure.scan)生成。 | configure.ac のテンプレート(configure.scan)生成。 | ||
行 26: | 行 29: | ||
サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、 | サブディレクトリ間の依存関係は Makefile.am の *_DEPENDENCIES でも解決してくれない様子。トップディレクトリの Makefile.am 内で、 | ||
- | SUBDIRS = include auxlib src ... | + | |
の順番を依存順(先頭から順に make される)にすることで解決。 | の順番を依存順(先頭から順に make される)にすることで解決。 | ||
- | ==== configure 生成 | + | |
+ | ==== configure 生成 ==== | ||
$ libtoolize -c -f | $ libtoolize -c -f | ||
- | ** --copy(-c) **\\ | + | **%%--copy(-c)%%** |
シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。 | シンボリックリンクを作らず、libtool データディレクトリからファイルをコピーする。 | ||
- | ** --force(-f)**\\ | + | **%%--force(-f)%%**\\ |
既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。 | 既存の libtool ファイルを置き換える。デフォルトでは libtoolize は既存のファイルを上書きしない。 | ||
行 43: | 行 48: | ||
$ automake -a -c | $ automake -a -c | ||
- | ** --add-missing(-a)**\\ | + | **%%--add-missing(-a)%%** |
- | パッケージ化に足りないファイルを自動的に生成。 | + | |
+ | パッケージ化に足りないファイルを自動的に生成。 | ||
+ | |||
+ | **%%--copy(-c)%%** | ||
- | ** --copy(-c)**\\ | ||
オプション時にシンボリックリンクではなくコピーする。 | オプション時にシンボリックリンクではなくコピーする。 | ||
行 53: | 行 60: | ||
上記コマンド群で生成されるファイルの流れは下図参照。 | 上記コマンド群で生成されるファイルの流れは下図参照。 | ||
- | [[ファイル: | + | {{autotools.svg.png|}} |
- | ==== 修正時 | + | |
+ | |||
+ | ==== 修正時 ==== | ||
configure.ac などのファイルを修正した場合は、下記コマンドを実行。 | configure.ac などのファイルを修正した場合は、下記コマンドを実行。 | ||
$ autoreconf -i -f | $ autoreconf -i -f | ||
- | ** --install(-i)**\\ | + | **%%--install(-i)%%** |
パッケージ化に足りないファイルを自動的に生成。 | パッケージ化に足りないファイルを自動的に生成。 | ||
- | ** --force(-f)**\\ | + | **%%--force(-f)%%** |
既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。 | 既存のファイルを置き換える。デフォルトでは既存のファイルを上書きしない。 | ||
- | ==== パッケージのコンパイル・インストール方法 | ||
- | ** 基本(コンパイル・インストール)**\\ | + | ==== パッケージのコンパイル、インストール方法 ==== |
- | + | ||
+ | === 基本(コンパイル、インストール) | ||
$ ./configure | $ ./configure | ||
$ make | $ make | ||
# make install | # make install | ||
- | ** 掃除 | + | |
+ | === 掃除 | ||
$ make clean | $ make clean | ||
- | ** アンインストール | + | |
+ | === アンインストール | ||
# make uninstall | # make uninstall | ||
- | ** 配布パッケージ(tarball)作成 | + | |
+ | === 配布パッケージ(tarball)作成 | ||
$ make dist | $ make dist | ||
- | ** 大掃除 | + | |
+ | === 大掃除 | ||
$ make distclean | $ make distclean | ||
- | ===== パッケージ命名規則 | ||
- | [http:// | + | ===== パッケージ命名規則 ===== |
- | ==== プロジェクト名 | + | [[http:// |
+ | |||
+ | |||
+ | ==== プロジェクト名 ==== | ||
英大文字やアンダースコア" | 英大文字やアンダースコア" | ||
- | ==== バージョン番号 | ||
- | メジャー番号、マイナー番号、マイクロ番号(またはパッチ番号)で管理するのが通例。\\ | + | ==== バージョン番号 ==== |
- | | + | |
- | または\\ | + | メジャー番号、マイナー番号、マイクロ番号(またはパッチ番号)で管理するのが通例。 |
- | | + | major.minor.micro |
+ | または | ||
+ | major.minor.patch | ||
この他にも、日付で管理することもある。 | この他にも、日付で管理することもある。 | ||
- | ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。\\ | + | ちなみに、ライブラリバージョンの場合は下記らしい。バージョンの付け方がややこしいので未使用。 |
- | | + | current.revision.age |
+ | |||
+ | [[http:// | ||
+ | |||
+ | |||
+ | ==== パッケージ名 ==== | ||
- | [http:// | + | プロジェクト名+ハイフン(-)+バージョン数字列+拡張子 |
- | ==== | + | パッケージ名の例としては、下記のようになる。 |
+ | foobar-1.2.3.tar.gz | ||
- | プロジェクト名+ハイフン(-)+バージョン数字列+拡張子 | + | 日付で管理する場合の例は下記。 |
+ | foobar-080707.tar.gz | ||
- | パッケージ名の例としては、下記のようになる。\\ | ||
- | | ||
- | 日付で管理する場合の例は下記。\\ | ||
- | |