处理大量的Boost头文件

Dealing with the huge number of Boost header files

本文关键字:文件 Boost 处理      更新时间:2023-10-16

是否有一种方法可以大幅减少Boost所需的头文件数量?

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

是否有一种c++机制将数千个头文件"捆绑"到一个"包"中,并将该文件检查到源代码控制中?

我猜这里的问题是源代码控制做一个区别,svn statussvn checkout是如此缓慢的所有这些文件来处理

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

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

我建议将第三方库放在单独的存储库中。Boost的模板很重,所以它们不捆绑头文件是有很好的理由的。尝试包含捆绑的Boost头文件将把"浪费"的时间从版本控制转移到构建时间。这并不能真正实现规模化。我将拒绝使用Boost,如果你试图这样做我的Boost头。

ccache可以为加速预处理器繁重的编译节省时间。

没有办法将所有内容打包到一个文件中(除了对存档进行版本控制,但这不是很好的实践,也根本不实用)。顺便说一句,Subversion在检出成千上万的小文件(比如Boost头文件)时速度很慢,所以也许你可以考虑切换到性能更高的SCM,比如Git。

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

不是你问的,但这里有一个方法来解决你的问题。据我所知,您正在将Boost文件添加到代码控制存储库中。为什么?它们不是你项目本身的一部分;它们不在你的控制之下

以下是我如何构建我的项目,这样我就不会遇到这种问题。除includelib文件夹外,所有内容都被添加到源代码控制中,如下所述。(我只显示了我的目录树的相关部分)

  • /
    • src本;包括我自己的源文件和头文件
    • ext本;外部依赖(如boost)
      • boost-1-46-1
        • Download.txt本;包含从
        • 下载正确版本的链接
        • 包括本;
        • 自由本;这既不