处理大量的Boost头文件

时间:2011-07-26 16:24:21

标签: c++ boost compiler-construction

有没有办法大幅减少Boost所需的头文件数量?

理想情况下,我要求Boost人们找到一种方法让他们的产品更小。但与此同时,有没有办法包含Boost,但没有几千个头文件可以处理?

是否有一种C ++机制可以将数千个头文件“捆绑”到一个“包”中,并将该单个文件检入源代码控制中?

我猜这里的问题是源代码控制做差异,svn statussvn checkout是如此之慢,所有这些文件都要处理。

5 个答案:

答案 0 :(得分:9)

Boost提供了一个名为BCP的工具。 BCP允许您提取Boost的子集。

它还可以分析源树并仅提取源树正在使用的Boost组件。

答案 1 :(得分:2)

我建议将您的第三方库放在一个单独的存储库中。 Boost模板很重,因此有一个很好的理由让他们不要捆绑他们的标题。尝试包含捆绑的Boost标头会将您的“浪费”时间从版本控制转移到构建时间。这并没有真正扩展。如果你试图用我的Boost标题,我会拒绝使用Boost。

答案 2 :(得分:1)

ccache可以为加速预处理器重编译提供救命。

答案 3 :(得分:0)

没有办法将所有文件打包在一个文件中(除了对存档进行版本控制,但这不是很好的做法,也不是实用的)。另外,据称Subversion在检查数千个小文件(例如Boost标头)时速度很慢,所以也许您可以考虑切换到像Git这样的更高性能的SCM。

您会对BCP感兴趣,这是一个分析您的源的Boost工具,并将您使用的Boost标头复制到一个单独的目录中。这有助于减少第三方文件,并且在我的情况下大多是正确的(我只需要在列表中添加一些文件)。

答案 4 :(得分:0)

不是你问的问题,但这是解决问题的方法。据我了解,您正在将Boost文件添加到代码控制存储库中。为什么?它们本身不属于您的项目;它们不在控制之下。

这是我如何构建我的项目,以便我不遇到这种问题。除了 include lib 文件夹之外,所有内容都添加到源代码管理中,如下所述。 (我只显示目录树的相关部分。)

  • /
    • src - 包含我自己的源文件和标题
    • ext - 外部依赖项(例如boost)
      • 升压1-46-1
        • Download.txt - 包含可从
        • 下载正确版本的链接
        • include - 这不会添加到源代码管理
        • lib - 这两个