9

Boost 是一个非常大的库,具有许多相互依赖关系——编译也需要很长时间(对我来说这会减慢CruiseControl的响应时间)。

我使用的 boost 的唯一部分是 boost::regex 和 boost::format。

是否有一种简单的方法可以仅提取特定 boost 子库所需的 boost 部分以加快编译速度?

编辑:回答关于我们为什么要重建提升的问题......

  1. 解析 boost 头文件仍然需要很长时间。我怀疑如果我们可以只提取我们需要的东西,解析也会更快。
  2. 我们的 CruiseControl 设置从头开始构建一切。如果我们更新我们正在使用的 boost 版本,这也会变得更容易。但是我会调查看看我们是否可以改变我们的构建过程,看看我们的构建机器是否可以在发生更改时构建 boost 并将这些更改提交给 SVN。(我公司有一项政策,所有出门的东西都必须在“构建机器”上构建。)
4

4 回答 4

8

首先,您可以使用 bcp 工具(可以在 tools 子文件夹中找到)提取您正在使用的头文件和文件。但是,这对编译时间没有帮助。其次,您不必每次都重新构建 Boost。只需在每次版本更改时预先构建 lib 文件,并在构建时复制“stage”文件夹。

于 2008-10-06T06:49:07.207 回答
2

除非您自己修补 boost 库,否则没有理由在每次构建时都重新编译它。

于 2008-10-06T06:47:37.473 回答
2

我们正在使用 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})
于 2008-10-06T06:51:25.110 回答
1

预编译的头文件是当今的流行词!在预编译的头文件中包含您需要的 boost 头文件 - tada!

于 2008-10-06T06:49:33.117 回答