如何处理Boost中的大型依赖关系
How do you deal with large dependencies in Boost?
Boost是一个非常大的库,具有许多相互依赖关系,编译也需要很长时间(对我来说,这会减慢我们的CruiseControl响应时间)。
我使用的boost的唯一部分是boost::regex和boost::format。
有没有一种简单的方法可以只提取特定boost子库所需的boost部分,以加快编译速度?
编辑:为了回答我们为什么要重建助推。。。
- 解析boost头文件仍然需要很长时间。我怀疑,如果我们只提取我们需要的东西,解析也会更快
- 我们的CruiseControl设置从头开始构建一切。如果我们更新我们正在使用的boost版本,这也会更容易。但我将进行调查,看看我们是否可以更改构建过程,看看我们的构建机器是否可以在发生更改时构建boost,并将这些更改提交给SVN。(我的公司有一项政策,所有出门的东西都必须建立在"构建机器"上。)
首先,您可以使用bcp工具(可以在tools子文件夹中找到)来提取您正在使用的标头和文件。不过,这对编译时间没有帮助。其次,你不必每次都重建Boost。只需在每次版本更改时预构建一次lib文件,并在构建时复制"stage"文件夹。
除非您正在修补boost库本身,否则没有理由在每次构建时重新编译它。
我们使用Boost,但我们只包含实际使用的类型的对象文件。也就是说,我们用一堆自制的实用程序构建了自己的静态库,并包含了Boost中我们认为有用的部分。我们的CMakeLists.txt
看起来像这样(如果你相应地调整SOURCES,你应该能够在CMake中加载它。)
project( MyBoost )
set(SOURCES
boost/regex/src/c_regex_traits.cpp
boost/regex/src/cpp_regex_traits.cpp
boost/regex/src/cregex.cpp
boost/regex/src/fileiter.cpp
boost/regex/src/icu.cpp
boost/regex/src/instances.cpp
boost/regex/src/posix_api.cpp
boost/regex/src/regex.cpp
boost/regex/src/regex_debug.cpp
boost/regex/src/regex_raw_buffer.cpp
boost/regex/src/regex_traits_defaults.cpp
boost/regex/src/static_mutex.cpp
boost/regex/src/usinstances.cpp
boost/regex/src/w32_regex_traits.cpp
boost/regex/src/wc_regex_traits.cpp
boost/regex/src/wide_posix_api.cpp
boost/regex/src/winstances.cpp
)
add_library( MyBoost STATIC ${SOURCES})
预编译的页眉是当今的流行语!在预编译的头中包含您需要的boost头-tada!
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中高效的大型稀疏块压缩线性方程
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 将依赖名称显式标记为类型名和模板的奇怪之处
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- C++GTKMM gui循环依赖关系
- 通过ccmake在cmake中缓存依赖选项
- 当基类是依赖类型时,这是一个缺陷吗
- 如何实现高效的算法来计算大型数据集的多个不同值?
- 从不同的附加依赖项中识别等同命名的函数
- 如何在 CMake 中对目标依赖项进行分组?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- LMDB:在有限的内存系统中打开大型数据库
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 为什么内存屏障依赖于变量?
- 具有许多第三方依赖项的大型跨平台C++项目的磁盘上的物理布局
- 如何处理Boost中的大型依赖关系