9

Boost は、多くの相互依存関係を持つ非常に大きなライブラリであり、コンパイルにも長い時間がかかります (これにより、 CruiseControlの応答時間が遅くなります)。

私が使用するブーストの唯一の部分は、boost::regex と boost::format です。

特定のブースト サブライブラリがコンパイルを高速化するために必要なブーストの部分のみを抽出する簡単な方法はありますか?

編集: ブーストを再構築する理由についての質問に答えるには...

  1. ブースト ヘッダー ファイルの解析にはまだ時間がかかります。必要なものだけを抽出できれば、解析も速くなると思います。
  2. 当社の CruiseControl セットアップは、すべてをゼロから構築します。これにより、使用しているブーストのバージョンを更新する場合も簡単になります. しかし、ビルド プロセスを変更して、変更が発生したときにビルド マシンがブーストをビルドできるかどうかを確認し、それらの変更を SVN にコミットできるかどうかを調査します。(私の会社には、ドアから出るものはすべて「ビルド マシン」でビルドする必要があるというポリシーがあります。)
4

4 に答える 4

8

まず、bcp ツール (tools サブフォルダーにあります) を使用して、使用しているヘッダーとファイルを抽出します。ただし、これはコンパイル時間には役立ちません。次に、Boost を毎回再構築する必要はありません。lib ファイルをバージョン変更ごとに 1 回事前にビルドし、ビルド時に「ステージ」フォルダーをコピーするだけです。

于 2008-10-06T06:49:07.207 に答える
2

ブースト ライブラリ自体にパッチを適用しない限り、ビルドを行うたびに再コンパイルする必要はありません。

于 2008-10-06T06:47:37.473 に答える
2

Boost を使用していますが、実際に使用するタイプのオブジェクト ファイルのみを含めています。つまり、自家製のユーティリティを集めて独自の静的ライブラリを構築し、Boost の有用な部分を含めます。見た目はこんな感じです ( SOURCESCMakeLists.txtを適切に調整すれば、これを CMake にロードできるはずです)。

project( MyBoost )

set(SOURCES 
  boost/regex/src/c_regex_traits.cpp
  boost/regex/src/cpp_regex_traits.cpp
  boost/regex/src/cregex.cpp
  boost/regex/src/fileiter.cpp
  boost/regex/src/icu.cpp
  boost/regex/src/instances.cpp
  boost/regex/src/posix_api.cpp
  boost/regex/src/regex.cpp
  boost/regex/src/regex_debug.cpp
  boost/regex/src/regex_raw_buffer.cpp
  boost/regex/src/regex_traits_defaults.cpp
  boost/regex/src/static_mutex.cpp
  boost/regex/src/usinstances.cpp
  boost/regex/src/w32_regex_traits.cpp
  boost/regex/src/wc_regex_traits.cpp
  boost/regex/src/wide_posix_api.cpp
  boost/regex/src/winstances.cpp
)

add_library( MyBoost STATIC ${SOURCES})
于 2008-10-06T06:51:25.110 に答える
1

プリコンパイル済みヘッダーは、今日の言葉です。プリコンパイル済みヘッダーに必要なブースト ヘッダーを含めます。

于 2008-10-06T06:49:33.117 に答える