4

boost/program_optionsコマンドラインからオプションを処理するために使用する小さなプログラムを書いています。ここで、一般に Boost がインストールされていないシステムにコードを配布したいと考えています。そこで、bcpユーティリティを使用しました。program_options チュートリアルexample/first.cppから呼び出された Boost の例で試しました。

bcp --scan --boost=/users2/xxx/boost_1_45_0 ~/prova/first.cpp dest

dest大量のファイルを含むディレクトリを作成し.hppます.cpp。これは私が必要としているものであり、それ以上のものではないと思います。ですよね?なぜなら:

du -hs dest
37M dest

37Mは多すぎませんか?たとえば、Python を使用しtest_optparse.pyて 61KB だけで同じことを行うことができます。

私は何か間違ったことをしていますか?ポイントは、私のソース プログラムが 4MB しかないということです。37MBのサードパーティのものを追加できません!!

4

1 に答える 1

3

Boost.Documentationには、このトピックについて私が提供できる以上の説明があります。最も注目すべき点:

実際には、bcp はかなり「太い」依存関係のリストを生成する可能性があることに注意してください。これには次のような理由があります。

[...]

  • ヘッダーをインクルードすると、bcp使用しているコンパイラがわからないため、考えられるすべてのプリプロセッサ パスに従います。Boost のサブセットをアプリケーションと一緒に配布している場合、それは一般的に起こりたいことです。

上記の最後のポイントにより、ほとんどの人の予想と比較して、検出されるヘッダーの数が大幅に増加する可能性があります。たとえば、bcp は boost/shared_ptr.hpp の 274 のヘッダー依存関係を検出します。レポート モードで bcp を実行すると、これらすべてのヘッダーが依存関係として検出された理由を確認できます。

bcp --report各ファイルを含める理由を確認して、本当に必要かどうかを確認することをお勧めします。

于 2010-12-27T14:42:38.467 に答える