在Windows上构建Boost

Building Boost on Windows

本文关键字:Boost 构建 Windows      更新时间:2023-10-16

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

b2 --build-dir="C:boostbuild" --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/buildproject.jam:314: in load-jamfile
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2/buildproject.jam:62: in load
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2/buildproject.jam:168: in project.find
C:/Users/root/Downloads/boost_1_47_0/tools/build/v2build-system.jam:570: in load
C:UsersrootDownloadsboost_1_47_0toolsbuildv2/kernelmodules.jam:283: in import
C:UsersrootDownloadsboost_1_47_0toolsbuildv2kernelbootstrap.jam:142: in boost-build
C:UsersrootDownloadsboost_1_47_0boost-build.jam:17: in module scope

我做错了什么,如何解决它?任何帮助都是感激的

感谢编辑:

我想在qt sdk中使用boost库,它使用mingw。这就是为什么我不能使用boost安装程序。当然,除非我不能找到这个问题的解决方案,否则我将不得不求助于使用msvc构建的qt。

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

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

1.1)下载Boost源码:
  • http://www.boost.org/users/download/
  • 或直接:http://sourceforge.net/projects/boost/files/boost/1.45.0/boost_1_45_0.7z/download)

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

要编译BJam,去Boost的源代码,找到build.bat(应该位于boost_1_45_0toolsbuildv2enginesrc),运行cmd, cd到build.bat的文件夹并执行:build.bat gcc(源)

编译时间小于30秒。

  • 注1: gcc必须在$PATH中。如果没有gcc,可以从http://www.mingw.org/wiki/InstallationHOWTOforMinGW获取。如果您不想在自动安装程序上浪费时间,请使用它。(安装时不要忘记选择c++编译器,默认只安装C编译器)
  • 注2:不要调用cygwin的gcc,否则你会得到一个"Access denied"错误,详见http://omgili.com/mailinglist/cygwin/cygwin/com/m2t961f6df41004191807y75bc02cfiabd7f684a8d5f8camailgmailcom.html。最好使用MinGW中包含的gcc,您稍后将与IDE一起使用。
编译完BJam之后,我们就可以编译Boost了。将bjam.exe添加到$PATH,运行cmd, cd boost_1_45_0,然后执行:
bjam --toolset=gcc "--prefix=C:DestinationFolder" install

其中DestinationFolder是您想要的文件夹路径(源)。

编译时间约30分钟。

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

bjam正在寻找一个名为boostcpp的文件。Jam",这在boost的生产版本中并不存在。幸运的是,你可以在github上找到它。

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

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

对于那些只需要32位的人,STL的Mingw发行版已经包含了Boost,并且已经为它构建了所有的库。