Boost:仅安装标头

Posted

技术标签:

【中文标题】Boost:仅安装标头【英文标题】:Boost: Install headers only 【发布时间】:2015-08-24 18:00:54 【问题描述】:

如何以独立于平台的方式将所有 boost 标头输出到包含 boost 版本的路径,而不编译任何内容或安装任何已编译的库?

【问题讨论】:

你有什么问题? 将措辞改为明确的而非隐含的问题 我不明白您为什么“必须为每个库指定 --without-<lib>”。只是正常运行命令?也许您可以通过文档安装说明更清楚地了解您面临的问题。 如果我这样做,我将编译所有的 boost 库,这正是我想要避免的 会吗?我还没有尝试过,但我知道在我的设置中我明确命名了要使用--with-<lib> 构建的库。只是不写那些? (或者也许没有任何暗示--with-all;这就是我们的意思吗?) 【参考方案1】:

为什么你认为你需要使用b2 来做到这一点?

如果您不想构建任何东西而只想复制标题,那么只需复制标题:

mkdir inc_dir
cp -R ./boost ./inc_dir/

如果您想要 inc_dir/boost-1.59.0 中的标题,请改为:

mkdir inc_dir/boost-1.59.0
cp -R ./boost ./inc_dir/boost-1.59.0/

如果您不想自己命名目录,请从 boost/version.hpp 标头中获取它:

ver=`awk '/define.*BOOST_LIB_VERSION/ print $3' boost/version.hpp | sed 's/"//g'`
mkdir inc_dir/boost_$ver_0/
cp -R ./boost ./inc_dir/boost_$ver_0/

但是现在这似乎是一个相当愚蠢的要求......真的是你需要经常做的事情,以至于提取版本需要自动化吗?您安装了多少个 Boost 版本,而不是从 boost_1_59_0.tar.bz2 之类的压缩包开始,这意味着您无论如何都需要知道版本?在以前的工作中,我曾经在多个操作系统上安装多个版本的 Boost,并且在开始该过程时从来没有遇到不知道我正在使用哪个版本的 Boost 的问题。

【讨论】:

编辑了问题以包含“版本”标准,这是我的错误。我想使用b2,因为它知道增强版本,而不是自己提取它 “输出所有带有版本的标题”是什么意思?标题只是复制了,版本与它有什么关系?如果您希望它们位于包含版本的目录中,您可以随时使用mkdir inc_dir/boost-1.59.0; cp -R boost inc_dir/boost-1.59.0; boost_1_54_0/boost/...这样区分版本的路径 好吧,你应该这么说的。上面的评论已经说明了如何做到这一点。 是的,用措辞来询问您真正想要做什么总是很有用的。答案已更新以自动查找版本。

以上是关于Boost:仅安装标头的主要内容,如果未能解决你的问题,请参考以下文章

使用仅标头库时,会增加链接器错误

从 GitHub 安装 Boost 特定模块

Boost安装

仅具有标头实现的重复符号[重复]

linux centos7源码编译安装LNMP企业级架构

linux centos7源码编译安装LNMP企业级架构