[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
`Makefile.in'で生成されたdist
ルールは,配布物に対してgzip
されたtar
ファイルやそれ以外の特色を持ったものを生成するために使
用することが可能です.ファイルは,AM_INIT_AUTOMAKE
(see section 5.6 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マクロで指定され
ているファイルに対応しているソースファイル),自動的に配布されます.
(include
を使用して)`Makefile.am'や,(m4_include
を使
用して)`configure.ac'でインクルードされているファイルと,
`automake --add-missing'でインストールされるヘルパースクリプトも
配布されます.
配布する必要がありながら自動的なルールでカバーされていないファイルがあ
ることも,まだあります.これらのファイルは,EXTRA_DIST
変数でリ
ストアップします.EXTRA_DIST
では,サブディレクトリのファイルを
記述することが可能です.
EXTRA_DIST
ではディレクトリを記述することも可能です.この場合は,
ディレクトリ全体が再帰的に配布物にコピーされます.これはディレクトリの
すべてのものをコピーし,CVS/RCSのバージョンコントロールファイル
も含まれることに注意してください.我々は,この機能を使用しないことを推
奨します.
SUBDIRS
を定義している場合,Automakeはサブディレクトリを再帰的に
配布物に含めます.SUBDIRS
を条件付きで定義している場合
(see section 20. 条件文),Automakeは通常,SUBDIRS
にあるすべてのディ
レクトリをできる限り配布物に含めます.条件付きでディレクトリの組を指定
する必要がある場合,配布物に含めるサブディレクトリの正確なリストを変数
DIST_SUBDIRS
に設定することで可能となります(see section 6. 最上位の`Makefile.am').
配布物に含めないものを細かく制御する必要があるときもあります. 例えば,生成されたソースファイルと配布したくないソースファイルがあると 仮定します.この場合は,Automakeは`dist'と`nodist'接頭辞を使 用したきめ細かな制御を提供します.すべてのプライマリや`_SOURCES' 変数は,リストアップされているファイルを配布物に追加するため, `dist_'を前置することが可能です.同様に,ファイルを配布物から除去 するために,`nodist_'を使用することが可能です.
例えば,配布するデータがあり配布しないソースコードもあるようにする方法 は,以下のようになります.
dist_data_DATA = distribute-this bin_PROGRAMS = foo nodist_foo_SOURCES = do-not-distribute.c |
パッケージ化する前に,配布物の変更を可能にすことが有効な時もあります.
dist-hook
ルールが存在する場合,配布ディレクトリが満たされた後で,
実際のtar(あるいはshar)ファイルが作成される前に,それが実行されます.
これを利用する方法の一つには,新しい`Makefile.am'を作るまでもない
サブディレクトリのファイルを配布するためにあります.
dist-hook: mkdir $(distdir)/random cp -p $(srcdir)/random/a1 $(srcdir)/random/a2 $(distdir)/random |
これを使用するもう一つの方法は,EXTRA_DISTでディレクトリを指定すること で,再帰的にインクルードされる不必要なファイルを削除するために存在しま す.
EXTRA_DIST = doc dist-hook: rm -rf `find $(distdir)/doc -name CVS` |
dist-hook
ルールを書くとき便利な二つの変数は,$(distdir)
と$(top_distdir)
です.
$(distdir)
は,dist
ルールがtarballを作成する前に,ファイ
ルを現在のディレクトリからコピーする場所を示します.最上位のディレクト
リにいる場合,distdir = $(PACKAGE)-$(VERSION)
になります.
`foo/'と言う名前のサブディレクトリで使用するときはdistdir =
../$(PACKAGE)-$(VERSION)/foo
になります.
$(top_distdir)
は,常に配布されるツリーのルートディレクトリを示
します.最上位では,それは$(distdir)
と同じです.`foo/'サブ
ディレクトリでは,top_distdir = ../$(PACKAGE)-$(VERSION)
になり
ます.
パッケージが入れ子状のAC_CONFIG_SUBDIRS
を使用しているとき
(see section `Configuring Other Packages in Subdirectories' in The Autoconf Manual),$(distdir)
と$(top_distdir)
が,サブパッケージの呼び出しではなく,
make dist
が実行されているパッケージの場所から相対的なものになる
ことに注意して下さい.
Automakeは,与えられた配布物が実際に動作することの保証に役立つ
distcheck
ルールを生成します.distcheck
は実際に配布物を作
成し,VPATH
のビルドを試み,テストスイートを実行し,そして配布物
自身が含まれることを確認するため,最終的に別のtarファイルを作成します.
パッケージのビルドには,./configure
の実行も含まれます.
configure
に追加フラグを供給する必要がある場合は,最上位の
`Makefile.am',またはmake
の呼出時のコマンドラインで
DISTCHECK_CONFIGURE_FLAGS
変数で定義する必要があります.
distcheck-hook
ルールが`Makefile.am'で定義されている場合,
新しい配布物が展開された後,展開されたコピーがconfigureされてビルドさ
れる前に,distcheck
で呼び出されます.いつも通りの注意とアドバイ
スはありますが,distcheck-hook
でほとんどすべてのことが可能です.
通常このフックは,配布物のエラーが標準的なメカニズムで発生する可能性を
調査するために使用されます.
配布物エラーの可能性について述べると,distcheck
では,
distclean
ルールが実際に全てのビルドファイルも確実に削除するとい
うことです.これは,VPATH
のビルドの終りにmake
distcleancheck
を実行することでなされます.デフォルトで,
distcleancheck
はdistclean
を実行し,
$(distcleancheck_listfiles)
を実行することでビルドツリーが空にな
ることを確かめます.通常この調査は,DISTCLEANFILES
変数
(see section 13. クリーンされるもの)に追加し忘れた,生成されるファイルを検出します.
distcleancheck
の動作は,ほとんどのパッケージでOKにすべきで,そ
うでない場合は,distcleancheck
ルールや
$(distcleancheck_listfiles)
変数の定義を優先している可能性があり
ます.distcleancheck
が完全にできないものに対して,最上位の
`Makefile.am'に以下のルールを追加してください.
distcleancheck: @: |
配布物の一部にもなるためクリーンしたくないビルドされたファイルを
distcleancheck
で無視したい場合,代わりに以下の定義を追加してく
ださい.
distcleancheck_listfiles = \ find -type f -exec sh -c 'test -f $(srcdir)/{} || echo {}' ';' |
ユーザがパッケージをビルドするとき,Makefileが配布されたファイルをリビ
ルドするものがある場合,それは通常エラーとなるので,上記の定義はデフォ
ルトではありません.(ファイルをビルドするために必要なユーザに足りない
ツールを考えてみてください.または,要求されたツールがパッケージでビル
ドされる場合,実行不可能なクロスコンパイルの状況を考慮してください.)
これに関するFAQがあり(see section 26.4 distclean後にビルドディレクトリに残っているファイル),
distcleancheck_listfiles
を実行する前にそれをよく読んで下さい.
distcheck
は,uninstall
ルールが,通常の場合と
`DESTDIR'でのビルドの両方で適切に動作するかどうかも調査します.そ
れはmake uninstall
の呼び出しで行ない,ファイルが残っていないか
どうかをインストールツリーを見て調査します.この調査で,
uninstall
に関連するルールを正しくコーディングしていることを確認
します.
デフォルトで,その調査はdistuninstallcheck
ルールで行なわれ,イ
ンストールツリーのファイルリストは,
$(distuninstallcheck_listfiles)
で生成されます(これは,ファイル
リストを標準出力に出力するために実行するシェルコマンドを値に持つ変数で
す).
これらのいずれかで,distcheck
の動作を変更するために優先させるこ
とが可能です.例えば,この調査を完全に無効にするため,以下のように書く
でしょう.
distuninstallcheck: @: |
Automakeは,様々なフォーマットでプロジェクトを配布するアーカイブを提供 するためのルールを生成します.ターゲットは以下のとおりです.
dist-bzip2
dist-gzip
dist-shar
dist-zip
dist-tarZ
ルールdist
(とその歴史的な同義語のdist-all
)は,利用可能な
すべてのフォーマットでアーカイブを作成します.17. Automakeの動作の変更を参照して
下さい.デフォルトでは,dist-gzip
ターゲットだけがdist
で
フックされます.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |