在Windows上配置Qt Creator使用Boost

12

我想在Windows上的Qt Creator中使用C++中的boost。 我按照以下说明操作:

http://www.boost.org/doc/libs/1_51_0/doc/html/bbv2/installation.html

因此,我运行了.\bootstrap.bat,然后是./b2 install --prefix=C:\Boost,接着将C:\Boost\bin添加到环境变量PATH中。

现在我想让Qt Creator“看到”boost,但我在网络上找不到任何资源。 请问有人可以给我一些提示吗?


当你说“我想使用boost”时,你是指“我想使用Boost Build”还是“我想使用Boost C++库”? - RA.
很抱歉,我是一个初学者,以前没有使用过Boost,我只知道它是一个C++库。我想要的是在我的C++代码中使用这个库。 所以我认为Boost Build和Boost C++ Library是不同的东西,它们之间有什么区别呢? 感谢您的评论。 - user1433602
即使您知道boost是什么,并且以前已经成功构建过它(具有所需的属性),也不能保证您不会花费半夜时间来处理其构建和集成到IDE中。所以请小心 :) - mlvljr
1
@HorgaIuliu Boost Build是一个C++构建系统(这就是你在问题中提到的链接)。如果你正在使用Qt Creator,你可能现在正在使用qmake或cmake。听起来你不想改变这个。Boost C++库(www.boost.org)是一个相当大的C++库(并且与Qt有一些重叠)。下载它并按照使用说明操作--如果你仍然有问题,请留言。 - RA.
3个回答

14

好了,我终于在Windows 7下使用Qt Creator 2.7.1、Qt 4.8.4和Boost 1.54编译了一些在Boost Filesystem教程中找到的示例。这是我的qmake项目文件。

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

win32 {
    INCLUDEPATH += C:/boost/include/boost-1_54
    LIBS += -LC:/boost/lib \
            -lboost_serialization-mgw46-mt-d-1_54 \
            -lboost_filesystem-mgw46-mt-d-1_54 \
            -lboost_system-mgw46-mt-d-1_54
}
请注意使用 "/" 而不是 "\"。
我的 Boost 库是使用 MinGW 编译到 "c:/boost" 目录下的。

win32 { INCLUDEPATH += C:/Users/User/Downloads/dev/boost_1_61_0 LIBS += "-LC:/dev/Boost/lib/"
"-Llibboost_filesystem-mgw53-mt-d-1_61.a", "-Llibboost_system-mgw53-mt-d-1_61.a", "-Llibboost_serialization-mgw53-mt-d-1_61.a" -LLIBS}
- thistleknot

3

我将基于我找到的其他答案回答这个问题。

首先,你需要使用与QtCreator使用相同编译器(通常是mingw)编译的boost库。如果你使用预编译的boost库(通常使用msvc编译),库会链接但会出现未定义引用错误。

所以,你需要自己编译boost库。要做到这一点,请按照以下步骤操作:

  1. 将mingw二进制文件添加到PATH中。进入 控制面板 > 系统 > 高级系统设置 > 环境变量 并设置 path 变量。在我的情况下,值为 c:\Qt\Tools\mingw\bin

  2. 打开终端并进入boost解压缩的目录。运行此命令:bootstrap.bat gcc

  3. 现在运行此命令:b2 link=shared toolset=gcc


1

我觉得你可能有点混淆了。

你提到的链接是用于Boost Build系统,而不是Boost库。www.boostpro.com上有完整的安装程序可供库文件使用,这样可以更快地让你运行起来,但如果出现问题,可以参考这里的指南自己构建。

在构建完成后,下一步是让Qt知道它们的存在。通常情况下,你需要在每个项目中进行设置,通过Qt Creator调整设置或直接编辑项目的.pro文件。我喜欢编辑.pro文件,因为这是我学习的方式,如果你也想这样做,需要让它知道头文件的INCLUDEPATH和库的LIBS路径。大部分的Boost只有头文件,所以根据你使用的部分,你可能需要或不需要LIBS部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接