什么是分阶段推进库?

时间:2015-04-27 00:18:06

标签: c++ boost

在尝试构建thrift c ++库时,我在指定--with-boost选项后遇到以下错误。

  

如果你有一个分阶段的升级库(仍然没有安装)请   在您的环境中指定$ BOOST_ROOT并且不提供PATH   --with-boost选项。

我查看了boost文档(我不太熟悉),但我找不到术语staged boost library的好定义。我看到了括号(still not installed),但是有许多状态的库可以在那个秋天属于not installed类别。

首次下载boost时,我会运行./bootstrap./b2进行编译。

此时是staged吗?或者我是否必须做其他事情才能使其成为staged

2 个答案:

答案 0 :(得分:5)

你可以打电话

b2 --help

查看Boost.Build的选项,您可以在那里找到

install                 Install headers and compiled library files to the
=======                 configured locations (below).
...
stage                   Build and install only compiled library files to the
=====                   stage directory.

stageinstall的声明指定Boost Libraries是安装在名为stage的子文件夹还是系统范围内。系统范围的含义取决于操作系统。在Windows中,目标目录为c:\boost,在Linux中为/usr/local。也可以使用-–prefix选项显式指定目标目录。另请参阅this answer,我想这会有所帮助。

有关更多信息,请参阅WindowsLinux的入门指南。

答案 1 :(得分:4)

当您运行.\b2来编译Boost时,它会创建一个名为stage的文件夹,编译的输出将放在%BOOST_ROOT%\ stage \ lib文件夹中。现在,您可以将此lib文件夹复制到某处,并将其添加到链接器的路径中。但是有些项目可能希望在stage \ lib中提供二进制文件。所以"上演"这意味着您是否已编译并存在于stage \ lib文件夹中的库。 .b2命令需要几个不同的参数来编译不同的二进制子项,例如,下面编译链接到共享运行时和目标x64架构的二进制文件:

 b2 variant=debug,release link=shared runtime-link=shared address-model=64

lib文件名的每个变体都有标记,因此它们不会相互覆盖,例如libboost_date_time-vc140-mt-gd-1_62.lib