差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
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 ​--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 
 + 
tips/how-to-autotools.1406023917.txt.gz · 最終更新: 2014/07/22 19:11 by rpp
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0