【问题标题】:Building Boost on Windows在 Windows 上构建 Boost
【发布时间】:2011-12-18 08:27:52
【问题描述】:

我正在尝试使用 mingw 在 Windows 7 x64 机器上构建 boost 库。当我尝试运行 b2

b2 --build-dir="C:\boost\build" --toolset=gcc --with-python

构建库时出现错误

Jamroot:138: in modules.load
rule boostcpp.set-version unknown in module Jamfile</C:/Users/root/Downloads/boost_1_47_0>.
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2/build\project.jam:314: in load-jamfile
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2/build\project.jam:62: in load
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2/build\project.jam:168: in project.find
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2\build-system.jam:570: in load
C:\Users\root\Downloads\boost_1_47_0\tools\build\v2/kernel\modules.jam:283: in import
C:\Users\root\Downloads\boost_1_47_0\tools\build\v2\kernel\bootstrap.jam:142: in boost-build
C:\Users\root\Downloads\boost_1_47_0\boost-build.jam:17: in module scope

我做错了什么以及如何解决?任何帮助表示赞赏

谢谢

编辑:

我想将 boost 库与使用 mingw 的 qt sdk 一起使用。这就是为什么我不能使用 boost 安装程序。当然,除非我无法解决这个问题,否则我将不得不求助于使用 msvc 构建的 qt。

【问题讨论】:

  • 你为什么不改用the installer?它让一切变得轻而易举。
  • bjam 应该可以工作。使用安装程序是一种解决方法,但不能解决根本问题。
  • 我假设您的意思是 --toolset=gcc 而不是 toolset=gcc
  • @nickb 是的。抱歉打错了。
  • @nickb : toolset 是一个功能,而不是程序选项,因此绝对不应该有 -- 前缀。即,toolset=gcc 是正确的,--toolset=gcc 不是。 Martynas,如果您确实使用了--toolset=gcc,那么解决方法很可能是指定toolset=gcc

标签: c++ windows boost


【解决方案1】:

这是我写的tutorial,用于使用 MinGW 在 Windows 7 上编译 Boost 1.45.0。我在这里复制教程以防链接中断:

1) 首先我们需要编译Boost。我们将使用 Boost 的最新版本:1.45.0(可能不是您阅读本教程时的最新版本。

1.1) 下载 Boost 源:

1.2) 要编译 Boost,我们需要使用 BJam。 BJam 的资源包含在 boost 的资源中。但是,我们不能使用 BJam 的二进制文件:我们必须编译它,因为以下问题:http://comments.gmane.org/gmane.comp.lib.boost.user/64146

要编译BJam,去Boost的源码,找到build.bat(应该位于\boost_1_45_0\tools\build\v2\engine\src),运行cmd,cd到build.bat的文件夹并执行:build.bat gcc (source)

编译持续时间少于 30 秒。

1.3) 一旦 BJam 编译完成,我们现在可以编译 Boost。在 $PATH 中添加 bjam.exe,运行 cmd,cd \boost_1_45_0 然后执行:

bjam --toolset=gcc "--prefix=C:\DestinationFolder" install

DestinationFolder 是您想要的任何文件夹路径 (source)。

编译持续大约 30 分钟。

【讨论】:

  • 在 boost 1.70 上运行良好
  • 这个答案已有 9 年历史,但非常棒.. 使用 boost 1.74 但我收到一些错误,抱怨循环依赖或类似的东西。我刚刚通过指定 --with-system 编译了我需要的模块。另外,请注意,在不同版本的 Boost \tools\build\v2\engine\src 上可能会略有不同(路径中没有 v2,没有 src 等)我使用 cmd 和 $PATH 中包含的 mingw32 箱
【解决方案2】:

这个帖子已经有一年了,但我遇到了同样的问题并且让它工作了,所以如果其他人需要解决方案,这里是我的。

bjam 正在寻找一个名为“boostcpp.jam”的文件,该文件在 boost 的生产版本中不存在。幸运的是,你可以在 github 上找到它。

https://github.com/iNiKe/boost/blob/master/boostcpp.jam

下载该文件(或将其从浏览器复制粘贴到一个新文件中)并将其保存为“boostcpp.jam”在您的 boost 目录中(或者它可能是您运行 bjam 的位置......他们碰巧在我的情况下是同一个目录)并再次运行该命令。希望它也对你有用。

【讨论】:

    【解决方案3】:

    对于那些只需要 32 位的用户,STL's Mingw Distro 已经为它构建了所有库,其中包含 Boost。

    【讨论】:

    • 这个没有构建 libboost_python - 我需要的一个库。我可能会搬到 Visual Studio 2008。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多