2011-02-02 6 views
5

私は知っている、それは愚かな質問でなければなりません。 autotoolsビルドシステムを使用しているライブラリがあるとします。 私はすべてconfigureconfigure.acMakefile.amconfig.hなどがあり、プロジェクトのルートフォルダに他のファイルがある可能性があります。開発者によって書かれたものもあれば、オートツールによって生成されたものもあります。オートツールとバージョンコントロール

質問:私がバージョン管理システム(私の場合はhg)を使用している場合 - そのautotoolsファイルのどれがVCSによって追跡され、hgignore'dではないはずですか?

おかげで、 セルジュ

+0

[Autotoolsによって生成されたファイルは、Gitリポジトリに保存する必要がありますか?](http://stackoverflow.com/questions/3290908/which-files-generated-by-autotools-should-i-keep-in -git-repository) – ptomato

答えて

10

私は、VCSで作業している人は、開発者であり、マシンにautotoolsをインストールする必要があります。生成されたファイルをチェックするだけで問題が発生することになります。

一方、開発者以外の人がオートツールをインストールせずにソフトウェアをビルドできるように、生成されたすべてのファイルがソースレベルで配布されていることを確認する必要があります。

+0

問題が私のために解決されたように見えます - 私はautogen.shスクリプトをレポに追加しました。このスクリプトは、configure.acとMakefile.amからすべてのautotools関連ファイルを再作成します。開発者はこのスクリプトを実行し、ソフトウェアを再構築できます。他のユーザーには、makefileのtarget - distがあります。ソースとすべてのautotoolsスクリプトも含まれたtarballを作成します。 – zserge

+3

あなたは実際にはautogen.shを必要としません - autoreconfはautotoolsと一緒にインストールされています。 – Flexo

+2

別のセットアップ手順が必要なintltoolなどのものを使用する場合は、この機能が必要です。 – ptomato

4

この上の2つの考え方があります。

  1. は、私ができる」
  2. 「私はそれが時間/バージョンXにあったとおりにプロジェクトを見てみたいです」後で自動的に生成されるものを常に再生成する "

私は後者のグループに個人的には一般的に入るが、あなたがおそらくこれ以上インストールしていない特定のバージョンのビルドシステムに問題があります。

あなたの例では、configureconfig.hはどちらも(おそらく)自動生成されているので、バージョンコントロールに含めるつもりならばMakefile.inも含めることになります。私のプロジェクトで

これは通常、それはGNUと私のconfigure.acが必要とする任意のカスタム/非標準のマクロが含まれm4と呼ばれるディレクトリだ場合は、マニュアルを参照して、configure.acよりも、ファイルの関連これ以上のautotoolsを持たないMakefile.am意味。

+0

私は第二の方法も好きです。この場合、ライブラリは常にautotoolsがインストールされたマシン上のrepoから構築されます。だから、できる限り私のレポでは、オートツール関連のファイルをほとんど持っていないと思います。 – zserge

+1

2つの学校は互いに排他的ではありません。生成されていないファイルはVCSに格納し、リリースのtarballは別の場所に保存します。しばしば、標準ソースコードリポジトリの兄弟ディレクトリに格納します。 –

関連する問題