我正在使用的 boost 组件之一遇到了一些错误。经过一番分析后,我发现我不是唯一的问题,作者已经发布了一个修复程序,可以在 boost SVN 主干中找到。
如果我只想更新此组件并重用已构建的库,最好的方法是什么?该组件不仅仅是 header 。
- 编译器:带有 SP1、TR1 的 MSVC 9
- 操作系统:Vista
- Boost:BoostPro 计算的 1.39
- 有问题的组件:Boost Wave
- 错误:竞争条件。该错误已于今年 5 月修复,但据我所知,他们尚未将其包含在任何版本中。
到目前为止我做了什么:
- svn checkout wave 子目录
- 替换了本地子目录
- 现在我正在寻找一种方法来指定我想要只是构建wave
我对重建整个 boost 库有点厌倦。我不知道 trunk 现在是否可以投入生产。
最佳答案
这就是我最终所做的:
首先,我检查了已修复问题的 Wave 库版本 (53230)。将其与本地拷贝进行比较后,我发现了以下更改:
-wave 重用了 boost.iterator 实现,而不是提供自己的实现
- flex_string 实现已更新
- 引用计数器被原子化。这应该是错误修复
然后我简单地将 boost/wave 目录替换为 SVN 中的目录。我运行了 bootstrap.bat(如果使用 BoostPro,您必须从 boost 源 zip 中获取它),然后运行 bjam:
bjam --build-directory=构建工具集=msvc 变体=调试|发布链接=静态线程=多运行时链接=共享 --with-wave
添加--with-wave只会构建wave及其依赖项。
此时我遇到了编译错误:看来 Spirit 也更新了。我从 SVN 下载了 Spirit (53252) 并重新发出了 bjam 命令。
库构建干净,我将两个库复制到我的 boost lib 文件夹中。
完成这些步骤后,我重建了我的项目,崩溃错误消失了。
关于c++ - 从 SVN 更新 Boost Wave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1316092/