我下载了Boost库,现在我只想构建一些库。什么是正确的命令?显然,内置类型=完整选项给了我太多。 我正在使用Windows XP,并希望使用Bjam编译Boost和MinGW以最终使用它。目前我认为我需要库Boost.filesystem,Boost.ProgramOptions和Boost.System。 另一个问题:我在哪里放置标题库?
答案 0 :(得分:61)
在step 5.2.4的Getting Started中,您可以指示b2
构建哪些库:
./b2 --with-program_options --with-filesystem --with-system
或者,使用./b2 --show-libraries
查看所有非标题库的列表。
以下是该页面的摘录:
特别是,为了限制构建所花费的时间,您可能会对以下内容感兴趣:
- 使用
查看库名称列表--show-libraries
- 使用
限制构建哪些库--with-<library-name>
或--without-<library-name>
选项- 通过向命令行添加发布或调试来选择特定的构建变体。
注意: b2
命令取决于升级版本,因此根据您的升级版本使用以下命令(此外,在这种情况下使用--with-libraries=<comma-seperated-library-names>
版本而不是{{1} }):
--with-<library-name>
代表./configure
及更早版本1.38.0
./bootstrap.sh
以后1.39.0
答案 1 :(得分:12)
这些答案对我没有用。在Windows上,这对我有用:
b2.exe -with-LIBRARY
例如,
b2.exe -with-test
答案 2 :(得分:7)
BCP实用程序是一个用于提取Boost子集的工具。对于希望与Boost分开发布库的Boost作者,以及希望将Boost子集与其应用程序一起分发的Boost用户,它非常有用。
当前版本的Boost(1.50.0)使用Boost.Build。构建BCP的新工作流程如下:
从根Boost目录中,键入:
bootstrap.bat
然后,一旦构建了Boost.Build,输入:
b2 tools/bcp
要提取,例如interprocess
,您可以使用:
$ mkdir /tmp/interprocess #bcp needs this
$ bcp interprocess /tmp/interprocess
这会将进程间及其依赖项复制到/tmp/interprocess
。
答案 3 :(得分:6)
我遇到了同样的问题。但我找到了创建必要文件的方法。
要遵循的步骤:
首先输入代码:
bootstrap.bat
然后输入以下代码以生成lib文件:
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
将在舞台文件夹中创建库文件。
答案 4 :(得分:2)
我对Boost 1.55库的最后一次构建尝试令人失望。所有构建几个库的尝试都只是输出完全混乱。
BJam要么尝试构建所有内容,要么仅构建所请求的内容,但是在&#34; bin.v2 / [long-random-path]&#34;文件夹(每个目录的库),其中包含垃圾,这很难将链接库复制到其他地方。
我偶然发现了在没有任何其他垃圾的情况下在一个地方构建和收集我想要的库的正确方法:
bjam ... --with- [library1] --with- [library2] stage
答案 5 :(得分:1)
对于看到错误消息的任何人的附加说明:
"error: wrong library name '<name of library>' in the --with-<library> option."
。
如果你像我一样聪明,并且只将下载的boost
子目录提取到系统中以最小化空间,b2
将无法找到源代码并为那些不是标题的库构建选项。即您也需要lib
子目录(和tools
)。