2011-07-26 20 views
6

ブーストに必要なヘッダーファイルの数を大幅に減らす方法はありますか?理想的には、私はブーストの人々に、自分の製品を小さくする方法を見つけるよう求めています。しかし、その間、ブーストを含める方法はありますか?数千のヘッダーファイルを処理することはできませんか?ブーストヘッダーファイルを扱う

何千ものヘッダファイルを1つの "パッケージ"に "バンドル"し、その単一のファイルをソース管理にチェックインするメカニズムはありますか?

ここで問題はソースコントロールだと思います。 diff、svn stを実行してチェックアウトするのが遅いので、これらすべてのファイルを処理する必要があります。

+3

最初のチェックイン/アウトだけが遅いですが、正しいですか?私はあなたがブーストヘッダーに重大な変更を行っているのではないかと疑うので、最初のチェックアウトでダウンロードされると、その後のチェックアウトは更新されたバージョンを取得する必要はありません。これはあなたのソース管理メカニズムが比較的穏やかであると仮定しています。 – Chad

+2

チャドが言ったことに加えて、コードを自分で修正するつもりでない限り、サードパーティのライブラリをソース管理にチェックインしない傾向があります。代わりに、ライブラリをアーカイブし、プロジェクトにコンパイルする方法のビルド手順を含めてください。 – Praetorian

+0

「対処する」とはどういう意味ですか?私は、プリコンパイルされたヘッダーファイルを使用することで、Boost.GILを使用するときに、10 +秒から数秒の小さなプログラムコンパイルを加速することができます。 –

答えて

9

ブーストにはBCPというツールがあります。 BCPでは、ブーストのサブセットを抽出することができます。また、ソースツリーを分析し、ソースツリーが使用しているBoostコンポーネントだけを抽出することもできます。

2

サードパーティライブラリを別のリポジトリに置くことをおすすめします。 Boostはテンプレートが重いので、ヘッダーをバンドルしないことにはかなりの理由があります。バンドルされたブーストヘッダーを含めると、バージョン管理からビルド時間に "無駄な"時間が移動します。それは実際に拡大縮小しません。私はあなたが私のブーストヘッダーにそれをしようとするなら、私はブーストを使用することを拒否します。

あなたは以前に同様の質問をしていましたが、私は技術的な制約を回避しようとしているかどうかまだ分かりません。

0

すべてのファイルを1つのファイルにパッケージ化する方法はありません(アーカイブのバージョン管理を除きますが、これは実際的でも実用的でもありません)。副次的なことに、Subversionは、ブーストヘッダなどの何千もの小さなファイルをチェックアウトするのが遅いことが知られているので、Gitのようなより性能の高いSCMに切り替えることを検討することができます。

bcpは、ソースとコピーを別のディレクトリのBoostヘッダで分析するブーストツールです。これは、サードパーティのファイルを減らすために多くの助けと私の場合(ほとんどの場合は、リストにいくつかのものを追加しなければならなかった)ほとんどだった。

0

質問したものではありませんが、ここで問題を解決する方法があります。私が理解しているように、コードコントロールリポジトリにBoostファイルを追加しています。どうして?彼らはあなた自身のプロジェクトの一部ではなく、あなたののコントロールの下にはありません。

私はこのような問題にぶつからないように私のプロジェクトをどのように構築しますか。以下に述べるように、のlibフォルダを含む以外は、すべてがソースコントロールに追加されます。 (私は私のディレクトリツリーの関連部分を示しています。)

  • /
    • SRC —は自分のソースファイルとヘッダ(例えばブーストなど)
    • EXT —外部依存
      • ブーストを含み1-46-1
        • ダウンロードしてください。これは、ソース管理に追加されていない—が含ま
        • TXT —が、これは可能でもない
+0

"なぜ?彼らはあなた自身のプロジェクトの一部ではなく、あなたのコントロール下にありません。"それにはいくつかの理由があります。私は外部のプロジェクトをバージョン管理下に置いて、他のマシンに簡単に配布できるようにしました(プルするだけで、必要なものを手に入れることができます)。また、誤ってファイルを変更した場合、その変更を元に戻すことができます。もちろん、バグを修正する必要がある場合は、すでにバージョン管理下にあります。 –

+3

すべての開発者がサードパーティのライブラリと同じバージョンになっていることを確認することは、リビジョン管理に物を入れないと悪夢です。 –

+0

@Tom&Nicol:前にチームで働いたことはないと私は認めています。答えはその観点から書かれています。それでも、コード用とサードパーティ製のlibsの2つのリポジトリを持つ方がよいでしょうか? –

1

ccache — libにあなたが

  • から正しいバージョンをダウンロードすることができ、リンクを含んでいますプリプロセッサの重いコンパイルをスピードアップするための人生節約。