从GitHub安装Boost特定模块

时间:2016-01-10 22:22:06

标签: git boost github cmake git-submodules

我正在编写一个克隆Boost official repository的脚本,并仅启动我需要的模块。

我读了git submodule man page,找到了一种只更新某些模块的方法。我甚至不需要编译,因为我只使用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

但我想通过使用模块名称(例如git submodule update中的multi_index)而不是路径(例如.gitsubmodules

来改进libs\multi_index命令

我怎样才能做到这一点?

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

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

  

/usr/share/cmake-3.0/Modules/FindBoost.cmake:699(file)中的CMake错误:     文件STRINGS文件     “/home/leflou/PROJECTS/tradingsuite/FinancialMarket/Server/boost/libs/boost/version.hpp”     无法阅读。   呼叫堆栈(最近一次呼叫):     FinancialMarket / Server / CMakeLists.txt:5(find_package)

1 个答案:

答案 0 :(得分:1)

首先,每当更新库时,您需要在主仓库中stm = db.prepareStatement("INSERT INTO ITEM (ID, TYPE, TITEL, UITGELEEND) VALUES (?, ?, ?, ?)"); db.setAutoCommit(false); for (int n = 0; n < ItemLijst.getItems().size(); n++) { Item huidigItem = ItemLijst.getItemObvIdx(n); stm.setString(1, huidigItem.getID().toString()); stm.setString(2, huidigItem.getType().toString()); stm.setString(3, huidigItem.getTitel()); stm.setString(4,String.valueOf(huidigItem.isUitgeleend())); stm.addBatch(); } stm.executeBatch(); db.commit(); ,因此库头的所有符号链接都会在./b2 headers子目录中更新。

你似乎忘记了Multi Index依赖于许多其他的boost库 - 需要在更新中同步。

E.g。 BMI使用MPL,元组和其他许多:

boost/

你应该看 BCP 做正确的提取