C++ 增强库-只构建我需要的
我下载了Boost库,现在我只想构建几个库。对此,正确的命令是什么?显然,build type=complete选项给了我太多的信息。 我正在使用Windows XP,希望使用Bjam编译Boost,并最终使用MinGW。目前我想我需要Boost.filesystem、Boost.ProgramOptions和Boost.System库。 另一个问题:我应该将标题库放在哪里?在中,您可以指示C++ 增强库-只构建我需要的,c++,boost,C++,Boost,我下载了Boost库,现在我只想构建几个库。对此,正确的命令是什么?显然,build type=complete选项给了我太多的信息。 我正在使用Windows XP,希望使用Bjam编译Boost,并最终使用MinGW。目前我想我需要Boost.filesystem、Boost.ProgramOptions和Boost.System库。 另一个问题:我应该将标题库放在哪里?在中,您可以指示b2要构建哪些库: ./b2 --with-program_options --with-filesyst
b2
要构建哪些库:
./b2 --with-program_options --with-filesystem --with-system
或者,使用/b2--show libraries
查看不只是标题的所有库的列表
以下是该页的摘录:
特别是,为了限制花费在建筑上的时间,您可能会对以下方面感兴趣:
- 使用
--显示库查看库名称列表
- 限制使用
或--使用-
选项生成哪些库--不使用-
- 通过向命令行添加release或debug来选择特定的构建变量
b2
命令取决于boost版本,因此根据您的boost版本使用以下命令(在本例中,使用--with libraries=
版本,而不是--with-
):
/为
及更早版本配置1.38.0
用于/bootstrap.sh
以后直到1.39.0
1.46.0
- 这些答案对我来说并不适用。在Windows上,这对我很有用:
b2.exe -with-LIBRARY
比如说,
b2.exe -with-test
我上一次构建Boost 1.55库的尝试是失败的。所有试图构建几个库的尝试,只有它们最终导致输出完全混乱 BJam要么尝试构建所有内容,要么只构建所请求的内容,但在“bin.v2/[long random path]”文件夹(每个目录的库)中,这些文件夹中都有垃圾,仅将链接库复制到其他目录是一件令人头痛的事 我意外地找到了正确的方法,只在一个地方构建和收集我想要的库,而不需要任何其他垃圾: 比亚姆--带-[library1]——带-[library2]舞台
- 在一个文件夹:/stage/lib中构建和收集库需要“stage”选项
- 只需要“-with-[library]”选项来构建所需的库
bootstrap.bat
然后,构建Boost.Build后,键入:
b2 tools/bcp
要仅提取,例如进程间
,可以使用:
$ mkdir /tmp/interprocess #bcp needs this
$ bcp interprocess /tmp/interprocess
这会将进程间及其依赖项复制到
/tmp/interprocess
我也遇到了同样的问题。但是我找到了创建必要文件的方法
应采取的步骤:
bootstrap.bat
b2.exe link=static runtime-link=static --with-chrono --with-date_time --with-filesystem --with-program_options --with-system --toolset=msvc-10.0 define=BOOST_USE_WINAPI_VERSION=0x0500
看到错误消息的任何人的附加说明:
“错误:在--with-选项中有错误的库名称”“。
如果您像我一样尝试变得聪明,只将下载的
boost
子目录提取到您的系统中以最小化空间,b2
将无法找到不只是标题的库的源代码和构建选项。也就是说,您还需要lib
子目录(以及tools
)。好的,谢谢。我没有读到这一点,因为我只是查看了Windows说明,但我认为命令行选项将是相同的。你能解释一下选项“-prefix”和“-build dir”之间的区别吗?后者只是暂时的吗?第一个是安装目录,对吗?@til--prefix
是您希望安装boost的地方。在Linux系统上通常是/usr
或/usr/local
。在最近的一次升级中,将引导程序
替换为b2
@rustyx。此外,它看起来现在的格式是--with-:/b2--with filesystem--with systemI使用b2----show libraries
,以尝试获取我想要的lib的名称。但是b2没有这样做,而是创建了一个目录C:\boost build
,并在那里复制了一堆文件(例如,b2.exe、bjam.exe等等)。在Boost.Build文档中看不到关于此的更多信息。我做错什么了吗?尝试安装而不是stage我不想在生成计算机上安装任何东西,我只想将它复制到其他地方这正是安装所做的-它会复制标题和链接文件。从暂存目录手动复制它是疯狂的。我不知道install到底做什么,但它可以做任何其他事情来复制头和链接文件。任何程序都可以做任何事情,但我要告诉你的是,在这种情况下,安装会复制头文件和二进制文件,而不做其他任何事情。至少在当前版本(1.57)中,需要一个双破折号,例如,b2.exe——带文件系统的
b2.exe——带测试的
抱怨“错误:在--with-选项中有错误的库名称‘test’。”这仅在为嵌入式设备构建时才是必要和实用的。快速计数13408*.hpp和264*.h文件。即使对于公共头文件,也有超过1000个。在正常系统中,许多其他包也可能依赖于boost中的不同模块。