什么是分阶段推进库?

mer*_*011 5 c++ boost

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

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

我查看了boost文档(我不太熟悉),但是我没有找到一个很好的术语定义staged boost library.我看到括号(still not installed),但有许多状态是图书馆可以在那个秋天的类别下not installed.

当我第一次下载时boost,我运行./bootstrap./b2编译它.

staged在这一点吗?或者我是否必须做其他事情来制作它staged

Nik*_*yev 5

你可以打电话

b2 --help
Run Code Online (Sandbox Code Playgroud)

看到的选项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.
Run Code Online (Sandbox Code Playgroud)

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

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


Shi*_*hah 5

当您运行.\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
Run Code Online (Sandbox Code Playgroud)

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