如何配置Qt Creator在Windows中使用Boost

时间:2013-09-01 20:30:04

标签: c++ qt boost

我在Ubuntu中创建了一个Qt项目,一切顺利。但是,我还需要在Windows上部署它。它使用Boost库(最大的问题)。

我一直在寻找解决方案的几个小时,但没有运气。我试图安装Boost库并将其与mingw链接;我想我错过了什么。这是我做的并下载最新版本:

1)跑了。\ bootstrap
2)然后。\ b2 --prefix = C:\ boost install

可悲的是没有正确安装。我只有2个文件夹(bin和share)但没有标题。

然而,在这里(http://nuwen.net/)我找到了一个包(Mingw + Boost和其他库)。这有我需要的一切。

现在我认为问题是.pro文件,因为我有很多未定义的引用。这是.pro文件,我尝试了一切(一些评论): http://pastebin.com/pBFMTAd8

感谢您的帮助!

2 个答案:

答案 0 :(得分:11)

我自己确实解决了这个问题。以下是我的表现方式。首先,需要使用与Qt一起使用的相同编译器编译的boost库。
如果你正在使用msvc,那么你很幸运,因为Boost的人帮你一个忙,并为你编译了库。您可以在此处下载:http://sourceforge.net/projects/boost/files/boost-binaries/ 如果你正在使用mingw(它与Qt捆绑在一起),你可以这样做:

  • 将mingw编译器添加到Windows PATH变量:
    〜去控制面板搜索系统;
    通过附加';'将mingw的路径(例如C:\ Qt \ Tools \ mingw \ bin)添加到PATH变量你的道路(例如:“; C:\ Qt \ Tools \ mingw \ bin”)
  • 编译Boost库:
    ~unzip boost archive
    〜打开一个命令行窗口,进入解压缩的boost文件夹,然后进入文件夹tools / build / v2 / engine 你用mingw工具集构建安装程序:。\ build --toolset = mingw
    〜这将在文件夹bin.ntx86或类似的东西中创建2个文件;将文件bjam和b2复制到解压缩的boost文件夹中;
    〜现在进入boost文件夹并开始构建它:。\ b2 --toolset = mingw --build-type = complete stage(有很好的教程可以和eclipse一起安装它:http://theseekersquill.wordpress.com/2010/08/24/howto-boost-mingw/
    注意:这需要几个小时,所以可能想看电影或者你想做什么同时做。但是,您可以选择通过在构建命令中添加另一个参数来加快速度:-j N,其中N是处理器拥有的核心数。
  • 构建完成后,您现在可以在Qt中链接库。为此,您需要修改.pro文件。首先,你必须告诉Qt标题的位置,你可以通过添加:
    INCLUDEPATH + = path_to_boost_folder,例如:INCLUDEPATH + = C:/ boost_1_54_0
    〜如果您使用的是需要链接的库,例如系统和文件系统,您必须单独链接它们:
    LIBS + =“C:/boost_1_54_0/stage/lib/libboost_filesystem-mgw48-1_54.a”,
    LIBS + =“C:/boost_1_54_0/stage/lib/libboost_system-mgw48-1_54.a”
  • 修改.pro文件后,运行qmake,然后重建。

希望这也适合你!

更新:文件夹层次结构已更改。要构建库,应阅读与每个版本相关的文档和Boost.Build's documentation。 从根文件夹构建库更容易(Building Boost 1.52 with MinGW):

C:\boost_1_60_0> bootstrap.bat mingw  
C:\boost_1_60_0> .\b2 --toolset=gcc -j N --build-type=complete

答案 1 :(得分:0)

构建boost不会放置标题,标题是在开发人员创建新代码时使用的。已安装的目录是用于分发的二进制文件。

请参阅http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#prepare-to-use-a-boost-library-binary

这将安装您在运行时使用的库(不是编译时)。因为你将这个bin文件夹添加到你的路径,这就是为什么当使用boost运行应用程序构建时它会运行而不是说“找不到xxx.dll”