Boost是一个非常大的库,具有许多相互依赖性 - 这也需要很长时间才能编译(对我来说,这会减慢我们的CruiseControl响应时间。)
我使用的boost的唯一部分是boost :: regex和boost :: format。
是否有一种简单的方法可以仅提取特定boost子库所需的boost部分,从而更快地进行编译?
编辑:回答关于我们为什么要重新建立提升的问题......
答案 0 :(得分:8)
首先,您可以使用bcp工具(可在工具子文件夹中找到)来提取您正在使用的标头和文件。但是,这对编译时没有帮助。其次,您不必每次都重建Boost。只需预先构建一次lib文件,并在每个版本更改时,并在构建时复制“stage”文件夹。
答案 1 :(得分:2)
除非您自己修补boost库,否则没有理由在每次构建时重新编译它。
答案 2 :(得分: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})
答案 3 :(得分:1)
预编译的标题是当天的词!在预编译的头文件中包含所需的boost头文件 - tada!