处理大量的Boost头文件
Dealing with the huge number of Boost header files
是否有一种方法可以大幅减少Boost所需的头文件数量?
理想情况下,我要求Boost的人找到一种方法使他们的产品更小。但与此同时,是否有一种方法可以包含Boost,但不需要处理数千个头文件?
是否有一种c++机制将数千个头文件"捆绑"到一个"包"中,并将该文件检查到源代码控制中?
我猜这里的问题是源代码控制做一个区别,svn status
和svn checkout
是如此缓慢的所有这些文件来处理
Boost提供了一个名为BCP的工具。BCP允许您提取Boost的子集。
它还可以分析您的源树并只提取您的源树正在使用的Boost组件。
我建议将第三方库放在单独的存储库中。Boost的模板很重,所以它们不捆绑头文件是有很好的理由的。尝试包含捆绑的Boost头文件将把"浪费"的时间从版本控制转移到构建时间。这并不能真正实现规模化。我将拒绝使用Boost,如果你试图这样做我的Boost头。
ccache可以为加速预处理器繁重的编译节省时间。
没有办法将所有内容打包到一个文件中(除了对存档进行版本控制,但这不是很好的实践,也根本不实用)。顺便说一句,Subversion在检出成千上万的小文件(比如Boost头文件)时速度很慢,所以也许你可以考虑切换到性能更高的SCM,比如Git。
您将对BCP感兴趣,BCP是一个Boost工具,它分析您的源代码并将您使用的Boost头文件复制到一个单独的目录中。这对减少第三方文件有很大帮助,在我的情况下基本上是正确的(我只需要添加一些文件到列表中)。
不是你问的,但这里有一个方法来解决你的问题。据我所知,您正在将Boost文件添加到代码控制存储库中。为什么?它们不是你项目本身的一部分;它们不在你的控制之下。
以下是我如何构建我的项目,这样我就不会遇到这种问题。除include和lib文件夹外,所有内容都被添加到源代码控制中,如下所述。(我只显示了我的目录树的相关部分)
- /
- src本;包括我自己的源文件和头文件
- ext本;外部依赖(如boost)
- boost-1-46-1
- Download.txt本;包含从 下载正确版本的链接
- 包括本;
- 自由本;这既不
- boost-1-46-1
- boost::文件系统::recursive_directory_iterator多线程安全
- 使用 Boost.Spirit 解析具有混合数据类型的 OBJ 文件?
- 避免使用 boost::进程间::消息队列创建文件
- 使用Boost文件系统C++将具有特定扩展名的文件的名称保存在特定文件夹中
- Boost program_options将多个配置文件解析结果存储到一个parsed_options中
- 告诉CMake链接到自定义文件夹中的Boost
- 致命错误:找不到'boost/uuid/uuid.hpp'文件
- 使用boost::mapped_region增长文件以供进一步写入?
- 造成致命错误:boost/fusion/iterator/equal_to.hpp 没有这样的文件或目录
- 通过boost asio iostream下载大文件的最快方法是什么?
- 将 boost::文件系统::p ath 转换为 char?
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 可以将Boost消息队列文件重定向到用户指定的位置
- boost::p rogram_options 配置文件格式
- 如何在Boost::program_options配置文件中为非字符串的自定义选项值类型处理空格
- boost日志文件无法创建sample.log文件
- 如何修复"无法打开包含文件'boost/config.hpp':没有这样的文件或目录(包括目录涵盖:C:\程序文件\boost\boost_1_67_0)
- C 可以在程序执行过程中移动内存映射的文件(boost :: intercecess)移动
- 包括cmake头文件boost.hpp和cmake
- 查找最后添加的文件(boost)