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

How to configure Qt Creator to use Boost in Windows

本文关键字:Windows Boost Creator Qt 何配置 配置      更新时间:2023-10-16

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

我找了好几个小时才找到解决方案,但运气不好。我尝试安装Boost库并将其与mingw链接;我想我错过了什么。以下是我所做的并下载的最新版本:

1) 跑步。\引导程序
2) 那么。\b2--前缀=C:\boost安装

遗憾的是没有正确安装。我只有2个文件夹(垃圾箱和共享),但没有标题。

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

现在我认为问题是.pro文件,因为我有很多未定义的引用。这是.pro文件,里面有我尝试过的所有内容(一些人评论道):http://pastebin.com/pBFMTAd8

感谢您的帮助!

我自己解决了这个问题。我是这样做的。首先,它需要使用和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库:
    ~解压缩boost存档
    ~打开命令行窗口,进入解压缩的boost文件夹,然后进入文件夹tools/build/v2/engine
    ~您已经使用mingw工具集构建了安装程序:。\build--工具集=mingw
    ~这将在文件夹bin.ntx86或类似文件中创建2个文件;复制解压缩的boost文件夹中的文件bjam和b2;
    ~现在进入boost文件夹并开始构建它:。\b2--toolset=mingw--buildtype=complete stage(有很好的教程可以将它与eclipse一起安装:http://theseekersquill.wordpress.com/2010/08/24/howto-boost-mingw/)
    注意:这需要几个小时,所以你可能想看一部电影或做你想做的事情。然而,您可以选择通过在build命令中添加另一个参数来稍微加快速度:-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/libboostrongystem-mgw48-1_54.a"
  • 修改.pro文件后,运行qmake,然后重新生成

希望这也适用于你!

更新:文件夹层次结构已更改。对于构建库,应该阅读与每个版本相关的文档以及Boost.Build的文档。从根文件夹构建库更容易(使用MinGW构建Boost 1.52):

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

building boost不会放置头,头是为开发人员创建新代码时准备的。安装的目录是用于分发的二进制文件。

参见http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#prepare-使用增强型二元

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