`Makefile.in'で生成されたdist
ターゲットは,配布物に対して
gzipされたtar
ファイルやそれ以外の特色を持ったものを生成するために
使用することが可能です.ファイルは,AM_INIT_AUTOMAKE
(see section Automakeが提供するAutoconfマクロ)で定義される`PACKAGE'と`VERSION'変数に基づいて
命名されます.より正確には,gzipされたtar
ファイルは
`package-version.tar.gz'と命名されます.
gzipを実行する方法を制御するために,make
の`GZIP_ENV'変数を使
用することが可能です.デフォルト設定は`--best'です.
ほとんどの部分で,配布するファイルは自動的にAutomakeが見つけます.ソース
ファイルはすべて自動的に配布物に含まれ,すべての`Makefile.am'と
`Makefile.in'も同様に扱われます.Automakeには,カレントディレクトリ
で(物理的にまたは`Makefile.am'規則のターゲットとして)見つかる場合,
自動的に含まれる一般的に使用されるファイルの組み込みリストがあります.こ
のリストは`automake --help'で出力されます.configure
で読み込
まれるファイルも(すなわち,AC_CONFIG_FILES
とその仲間のような様々
なAutoconfマクロで指定されているファイルに対応しているソースファイル),
自動的に配布されます.
配布する必要がありながら自動的な規則でカバーされていないファイルがあるこ
とも,まだあります.これらのファイルは,EXTRA_DIST
変数でリストアッ
プします.EXTRA_DIST
では,サブディレクトリのファイルを記述するこ
とが可能です.
EXTRA_DIST
ではディレクトリを記述することも可能です.この場合は,
ディレクトリ全体が再帰的に配布物にコピーされます.これはディレクトリの
すべてのものをコピーし,CVS/RCSのバージョンコントロールファイルも
含まれることに注意してください.我々は,この機能を使用しないことを推奨し
ます.
配布物に含めないものを細かく制御する必要があるときもあります.例 えば,生成されたソースファイルと配布したくないソースファイルがあると仮定 します.この場合は,Automakeは`dist'と`nodist'接頭辞を使用した きめ細かな制御を提供します.すべてのプライマリや`_SOURCES'変数は, リストアップされているファイルを配布物に追加するため,`dist_'を前置 することが可能です.同様に,ファイルを配布物から除去するために, `nodist_'を使用することが可能です.
例えば,配布するデータがあり配布しないソースコードもあるようにする方法は, 以下のようになります.
dist_data_DATA = distribute-this bin_PROGRAMS = foo nodist_foo_SOURCES = do-not-distribute.c
これを使用するもう一つの方法は,EXTRA_DISTでディレクトリを指定することで, 再帰的に含まれる不必要なファイルを削除するために存在します.
EXTRA_DIST = doc dist-hook: rm -rf `find $(distdir)/doc -name CVS`
SUBDIRS
を定義している場合,Automakeはサブディレクトリを再帰的に配
布物に含めます.SUBDIRS
を条件つきで定義している場合
(see section 条件文),Automakeは通常,SUBDIRS
にあるすべてのディ
レクトリをできる限り配布物に含めます.条件つきでディレクトリの組を指定す
る必要がある場合,配布物に含めるサブディレクトリの正確なリストを変数
DIST_SUBDIRS
に設定することで可能となります.
パッケージ化する前に,配布物の変更を可能にすことが有効な時もあります.
dist-hook
ターゲットが存在する場合,配布ディレクトリが満たされた後
で,実際のtar(あるいはshar)ファイルが作成される前に,それが実行されます.
これを利用する方法の一つには,新しい`Makefile.am'を作るまでもないサ
ブディレクトリのファイルを配布するためにあります.
dist-hook: mkdir $(distdir)/random cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random
Automakeは,与えられた配布物が実際に動作することの保証に役立つ
distcheck
ターゲットを生成します.distcheck
は実際に配布物を
作成し,VPATH
のビルドを試み,テストスイートを実行し,そして配布物
自身が含まれることを確認するため,最終的に別のtarファイルを作成します.
パッケージのビルドは./configure
の実行も含まれます.
configure
に追加フラグを供給する必要がある場合は,トップレベルの
`Makefile.am',またはmake
の呼出時のコマンドラインで
DISTCHECK_CONFIGURE_FLAGS
変数で定義する必要があります.
ターゲットdistcheck-hook
が`Makefile.am'で定義されている場合,
新しい配布物が展開された後,展開されたコピーがコンフィグレーションされて
ビルドされる前に,distcheck
で呼び出されます.いつも通りの注意とア
ドバイスはありますが,distcheck-hook
でほとんどすべてのことが可能
です.通常このフックは,配布物のエラーが標準的なメカニズムで発生する可能
性を調査するために使用されます.
配布物エラーの可能性について述べると,distcheck
はdistclean
ターゲットが実際に全てのビルドファイルも確実に削除するということです.こ
れは,VPATH
のビルドの終りにmake distcleancheck
を実行するこ
とでなされます.デフォルトで,distcleancheck
はdistclean
を
実行し,$(distcleancheck_listfiles)
を実行することでビルドツリーが
空になることを確かめます.通常この調査は,DISTCLEANFILES
変数
(see section クリーンされるもの)に追加し忘れた,生成されるファイルを検出します.
distcleancheck
の動作は,ほとんどのパッケージでOKにすべきで,そう
でない場合は,distcleancheck
ターゲットや
$(distcleancheck_listfiles)
変数の定義を優先している可能性がありま
す.distcleancheck
が完全にできないものに対して,トップレベルの
`Makefile.am'に以下の規則を追加してください.
distcleancheck: @:
配布物の一部にもなるためクリーンしたくないビルドされたファイルを
distcleancheck
で無視したい場合,代わりに以下の定義を追加してくだ
さい.
distcleancheck_listfiles = \ find -type f -exec sh -c 'test -f $(scrdir)/{} || echo {}'
ユーザがパッケージをビルドするときMakefileが配布されたファイルをリビルド するものもあるので,通常エラーとなるので,上記の定義はデフォルトではあり ません.(ファイルをビルドするために必要なユーザに足りないツールを考えて みてください.または,要求されたツールがパッケージでビルドされる場合,実 行不可能なクロスコンパイルの状況を考慮してください.)
distcheck
は,uninstall
ターゲットが,通常の場合と
`DESTDIR'でのビルドの両方で適切に動作するかどうかも調査します.それ
はmake uninstall
の呼び出しで行ない,ファイルが残っていないかどう
かをインストールツリーを見て調査します.この調査で,uninstall
に関
連するターゲットを正しくコーディングしていることを確認します.
デフォルトで,その調査はdistuninstallcheck
ターゲットで行なわれ,
インストールツリーのファイルリストは,
$(distuninstallcheck_listfiles)
で生成されます(これは,ファイルリ
ストを標準出力に出力するために実行するシェルコマンドを値に持つ変数です).
これらのいずれかで,distcheck
の動作を変更するために優先させること
が可能です.例えば,この調査を完全に無効にするため,以下のように書くでしょ
う.
distuninstallcheck: @:
Automakeは,配布物を生成する要求があったとき,`.tar.gz'ファイルと,
その他のアーカイブ形式を生成します,section Automakeの動作の変更.ターゲット
dist-gzip
は`.tar.gz'ファイルのみを生成します.
Go to the first, previous, next, last section, table of contents.