C++ 增强库-只构建我需要的

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

我下载了Boost库,现在我只想构建几个库。对此,正确的命令是什么?显然,build type=complete选项给了我太多的信息。 我正在使用Windows XP,希望使用Bjam编译Boost,并最终使用MinGW。目前我想我需要Boost.filesystem、Boost.ProgramOptions和Boost.System库。 另一个问题:我应该将标题库放在哪里?

在中,您可以指示
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]”选项来构建所需的库
      该实用程序是提取Boost子集的工具。对于希望将其库与Boost分开分发的Boost作者,以及希望将Boost的子集与应用程序一起分发的Boost用户来说,这非常有用

      当前版本的Boost(1.50.0)使用Boost.Build。构建BCP的新工作流如下所示:

      在根Boost目录中,键入:

      bootstrap.bat
      
      然后,构建Boost.Build后,键入:

      b2 tools/bcp
      
      要仅提取,例如
      进程间
      ,可以使用:

      $ mkdir /tmp/interprocess #bcp needs this
      $ bcp interprocess /tmp/interprocess
      

      这会将进程间及其依赖项复制到
      /tmp/interprocess

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

      应采取的步骤:

    • 如果您有Microsoft Visual Studio 2010,请在管理员模式下打开Microsoft Visual Studio命令提示符(2010)
    • 首先输入代码:

      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
      
    • 库文件将在后台文件夹中创建


    • 看到错误消息的任何人的附加说明:
      “错误:在--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中的不同模块。