【问题标题】:Building Boost BCP构建 Boost BCP
【发布时间】:2010-10-01 05:36:31
【问题描述】:

过去两个小时我一直在尝试构建Boost C++ Libraries,但没有任何结果就停止了。由于我是 C++ 新手,因此无法正确构建。如何使用 Visual Studio 2008 正确构建它?

我需要使用 BCP 工具来提取库的子集。所以我需要先建立BCP,对吧?这个怎么做?当我尝试构建它时,出现以下错误

致命错误 LNK1104:无法打开文件“libboost_filesystem-vc90-mt-gd-1_37.lib”。

我在哪里可以得到上面给出的库文件?

【问题讨论】:

    标签: c++ boost


    【解决方案1】:

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

    在 Boost 根目录中,键入:

    bootstrap.bat
    

    然后,一旦构建了 Boost.Build,输入:

    b2 tools/bcp
    

    【讨论】:

    • 生成的二进制文件位于 dist/bin/bcp。
    • 我已经完成了 3 个步骤:> bootstrap.bat > .\b2 > .\b2 tools/bcp 然后我就可以使用它了:C:\Users\pedro\dev-VS2008\boost_1_59_0>dist\bin\bcp boost\tokenizer.hpp C:\Users\pedro\dev-VS2008\MyProject\boost_1_59_0
    • 在 linux 上可能值得注意的是,您可能需要以 ./b2 tools/bcp 执行第二个命令。小细节,但可能会导致经验不足的用户。
    • 我认为 Linux 使用的是 shell 脚本,而不是批处理文件。此外,如果您使用的是 Linux,那么您将自动不再“经验不足”
    【解决方案2】:

    首先,您需要在命令 shell 中有正确的 PATH、INCLUDE 和 LIB 环境变量。为此,使用参数调用文件“vcvarsall.bat”(或类似文件):

    vcvarsall.bat x86
    

    接下来您必须构建 bjam(您也可以从 Boost 页面下载它,但几乎一样快)。转到 Boost 中的 tools\jam\src 文件夹并输入:

    build.bat
    

    它应该生成一个包含 bjam.exe 的子文件夹 bin.ntx86。为方便起见,请将其复制到 Boost 主文件夹。接下来,您可以构建 bcp。进入tools\bcp 文件夹并输入:

    ..\..\bjam.exe --toolset=msvc
    

    回到 Boost 主文件夹,然后您可以构建任何您想要的库:

    bjam toolset=msvc –-with-{library}
    

    {library} 是要构建的库之一。所有可构建的库都可以显示为:

    bjam –-show-libraries
    

    还有更多的 bjam 构建参数。您可以指定的带有关键字的一些参数是:

    variant=debug|release
    link=shared|static
    threading=multi|single
    

    一个例子是:

    bjam toolset=msvc –-with-filesystem threading=multi variant=debug stage
    

    欲了解更多信息,请访问Boost documentation pages

    编辑:更新了指向最新 Boost 文档的链接

    编辑:更正选项 --with-{library} 和 --show-libraries

    【讨论】:

    • 感谢您的出色回答!这对我帮助很大。
    • 这是--with-{library}--show-libraries。两个“-”,不是一个。
    • 感谢 KTC,文档也这么说。我更正了答案。
    • 在 boost 1.46 中使用这些指令存在一些问题,包括缺少 tools/jambcp build failure
    • 工具/卡纸不存在的解决方法(至少在 1.48 中);运行 bootstrap.bat,它将 bjam 复制到您的主 boost 文件夹中。
    【解决方案3】:

    我提取了源:https://github.com/district10/cmake-bcp(不需要配置BOOST,因为已经包含了所有源代码)。

    在 Linux 上,cmake + make 构建:

    # cd source_dir
    mkdir build && cd build
    cmake ..
    make
    

    在 Windows 上:构建 CMake-GUI + Visual Studio。需要帮忙?见HOWTO: Win + CMake + Visual Studio 2010

    我的可执行文件:


    提示:如果您在使用 Boost 时在 Windows 上遇到链接问题,请查看boost/config/auto_link.hpp,您就会明白。要解决此问题,您只需注释掉整个文件即可。

    【讨论】:

    • 感谢提供二进制文件!节省了我大概 8 个小时的编译时间。
    • 顺便说一下,编译时间不到1分钟。它只是要编译的 boost bcp,而不是整个 Boost。
    【解决方案4】:

    请注意,您不需要从源代码构建 Windows 版本的 bcp —— 您也可以从 http://www.boostpro.com/download 下载二进制版本,然后跳过所有这些步骤。

    (或者,至少理论上是这样的——我没有尝试过;我只是在寻找预构建的 Linux 版本时找到了那个页面和这个页面。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2015-03-26
    • 1970-01-01
    相关资源
    最近更新 更多