从 GitHub 安装 Boost 特定模块

Install Boost specific modules from GitHub

我正在开发一个克隆 Boost official repository 并仅初始化我需要的模块的脚本。

我读了git submodule man page, and found a way to update only some modules. I don't even need to compile because I'm only using multi_index

git clone -b boost-1.60.0 https://github.com/boostorg/boost.git boost
cd boost
git submodule update --init libs/multi_index/ tools/build

但我想通过使用模块名称(例如 multi_index.gitsubmodules 中找到)而不是路径(例如 libs\multi_index)来改进我的 git submodule update 命令

我怎样才能做到这一点?

此外,当我想使用该设置时,缺少 boost/version.hpp
我执行了 boostrap.sh./b2 --with-multi_index 但它回复了 error: wrong library name 'multi_index' in the --with-<library> option.

如何生成 CMake find_package(Boost REQUIRED) 需要的 boost/version.hpp

CMake Error at /usr/share/cmake-3.0/Modules/FindBoost.cmake:699 (file): file STRINGS file "/home/leflou/PROJECTS/tradingsuite/FinancialMarket/Server/boost/libs/boost/version.hpp" cannot be read. Call Stack (most recent call first): FinancialMarket/Server/CMakeLists.txt:5 (find_package)

首先,无论何时更新库,您都需要在主仓库中 ./b2 headers,因此库 headers 的所有符号链接都会在 boost/ 子目录中更新。

您似乎忘记了 Multi Index 依赖于许多其他增强库 - 这些库需要在更新中同步。

例如BMI 使用 MPL、元组和许多其他:

 60 boost/mpl
 56 boost/config.hpp
 39 boost/type_traits
 32 boost/detail
 29 boost/preprocessor
 17 boost/serialization
 11 boost/noncopyable.hpp
 10 boost/move
  7 boost/utility
  7 boost/tuple
  6 boost/static_assert.hpp
  5 boost/throw_exception.hpp
  5 boost/call_traits.hpp
  4 boost/operators.hpp
  4 boost/foreach_fwd.hpp
  4 boost/bind.hpp
  4 boost/archive (optional)
  3 boost/iterator
  2 boost/ref.hpp
  2 boost/limits.hpp
  2 boost/functional (for `hash`)
  2 boost/assert.hpp
  1 boost/integer

您应该查看 BCP 以进行正确的提取