处理大量的Boost头文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了处理大量的Boost头文件相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

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

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

另一答案

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

另一答案

ccache可以为加速预处理器重编译而节省生命。

另一答案

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

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

另一答案

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

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

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

以上是关于处理大量的Boost头文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的由 boost.python 和 c++ 头文件编译的 .so 文件失败了?

在 MFC dll 中包含 boost mutex 头文件时断言

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

Linux make 无法链接到 Boost 非标头库

boost库之文件处理filesystem

减轻头文件中的长限定