有没有办法大幅减少Boost所需的头文件数量?
理想情况下,我要求Boost人们找到一种方法让他们的产品更小。但与此同时,有没有办法包含Boost,但没有几千个头文件可以处理?
是否有一种C ++机制可以将数千个头文件“捆绑”到一个“包”中,并将该单个文件检入源代码控制中?
我猜这里的问题是源代码控制做差异,svn status
和svn checkout
是如此之慢,所有这些文件都要处理。
答案 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 文件夹之外,所有内容都添加到源代码管理中,如下所述。 (我只显示目录树的相关部分。)