提升库 - 只构建我需要的东西

时间:2011-01-17 14:31:37

标签: c++ boost

我下载了Boost库,现在我只想构建一些库。什么是正确的命令?显然,内置类型=完整选项给了我太多。 我正在使用Windows XP,并希望使用Bjam编译Boost和MinGW以最终使用它。目前我认为我需要库Boost.filesystem,Boost.ProgramOptions和Boost.System。 另一个问题:我在哪里放置标题库?

6 个答案:

答案 0 :(得分:61)

step 5.2.4Getting 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及更早版本
  • {li> 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)

我遇到了同样的问题。但我找到了创建必要文件的方法。

要遵循的步骤:

  1. 如果您有Microsoft Visual Studio 2010,则以管理员模式打开Microsoft Visual Studio命令提示符(2010)。
  2. 首先输入代码:

    bootstrap.bat
    
  3. 然后输入以下代码以生成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. 将在舞台文件夹中创建库文件。

答案 4 :(得分:2)

我对Boost 1.55库的最后一次构建尝试令人失望。所有构建几个库的尝试都只是输出完全混乱。

BJam要么尝试构建所有内容,要么仅构建所请求的内容,但是在&#34; bin.v2 / [long-random-path]&#34;文件夹(每个目录的库),其中包含垃圾,这很难将链接库复制到其他地方。

我偶然发现了在没有任何其他垃圾的情况下在一个地方构建和收集我想要的库的正确方法:

  

bjam ... --with- [library1] --with- [library2] stage

  • &#34; stage&#34;在一个文件夹中构建和收集库需要选项:/ stage / lib
  • &#34; - with- [library]&#34;只需要构建所需的库。

答案 5 :(得分:1)

对于看到错误消息的任何人的附加说明: "error: wrong library name '<name of library>' in the --with-<library> option."

如果你像我一样聪明,并且只将下载的boost子目录提取到系统中以最小化空间,b2将无法找到源代码并为那些不是标题的库构建选项。即您也需要lib子目录(和tools)。