2

使用しているブーストコンポーネントの1つにいくつかのバグがあります。問題を少し分析したところ、私だけではないことがわかりました。作成者は、ブーストSVNトランクで利用可能な修正プログラムをすでに発行しています。

このコンポーネントだけを更新して、すでに構築されているライブラリを再利用したい場合、最善のアプローチは何でしょうか。コンポーネントはヘッダーのみではありません。

  • コンパイラ:SP1、TR1を搭載したMSVC 9
  • OS:Vista
  • Boost:BoostProコンピューティングから1.39
  • バギーコンポーネント:ブーストウェーブ
  • バグ:競合状態。バグは今年5月に修正されましたが、私が知る限り、どのリリースにも含まれていません。

私がこれまでにしたこと:

  • ウェーブサブディレクトリのsvnチェックアウト
  • ローカルサブディレクトリを置き換えました
  • 今、私は波だけを構築したいことを指定する方法を探しています

Boostlib全体を再構築するのに少しうんざりしています。現在、トランクが本番環境に対応しているかどうかはわかりません。

4

3 に答える 3

2

これが私がやったことです:

  1. 最初に、問題が修正された Wave ライブラリのバージョン (53230) を確認しました。それをローカル コピーと比較したところ、次の変更が見つかりました。

    - wave は、独自のものを提供する代わりに、boost.iterator の実装を再利用していました。

    - flex_string の実装が更新されました

    - 参照カウンターがアトミックになりました。これはバグ修正のはずです

  2. 次に、ブースト/ウェーブディレクトリをSVNのものに置き換えました。bootstrap.bat を実行し (BoostPro を使用している場合は、ブースト ソースの zip から取得する必要があります)、次に bjam を実行しました。

    bjam --build-directory=build toolset=msvc variant=debug|release link=static threading=multi runtime-link=shared --with-wave

    --with-wave を追加すると、wave とその依存関係のみがビルドされます。

  3. この時点でコンパイル エラーが発生しました。Spirit も更新されたようです。SVN から Spirit (53252) をダウンロードし、bjam コマンドを再発行しました。

    ライブラリはきれいにビルドされ、2 つのライブラリをブースト ライブラリ フォルダにコピーしました。

これらの手順を実行した後、プロジェクトを再構築すると、クラッシュ エラーはなくなりました。

于 2009-08-22T15:56:15.617 に答える
1

最善の方法:diffリポジトリ内の変更を ing してパッチを作成し (たとえば、リポジトリの一部をチェックアウトして を使用)、次に(Unix ツール)svn diffを使用して Boost インストール内のファイルにパッチを適用します。patch

これには、Windows 上の Unix ライクなコンソール (Cygwin など) が必要になる場合があります。別の方法として、TortoiseSVN などの Windows SVN クライアントを利用することもできますが、バージョン管理外のファイルにパッチを適用できるかどうかはわかりません。

ヘッダーライブラリについて話しているのですか?そうでない場合は、Boost ライブラリのその部分も再構築する必要があります。残念ながら、これは BoostPro の Boost インストーラーと完全に互換性があるとは思いません。

于 2009-08-22T14:35:23.673 に答える
1

ログを確認して、問題が修正された正確なリビジョンを確認し、そのリビジョンのみを比較して、手動でパッチを適用できます。

1 つのコンポーネントのみを更新することはお勧めしません。boost はそれ自体を頻繁に再利用するため、インターフェイスが変更されると、あらゆる種類の奇妙な動作が発生し始める可能性があります。おそらく、コンポーネントとバグを指定していただければ、さらにお手伝いできます。

于 2009-08-22T14:40:20.917 に答える