Qt 应用之 MinGW编译 并使用boost库

PS:最近在使用我们的mingw qt 工程中使用 boost 的时候,需要用到一些boost 中的工具类,该类是需要通过编译,然后链接到qt中的。网上看了很多教程,有很多千篇一律的,特此提醒,能下载到的现成的不一定是能用的,倒头来还要自己摸索一遍,从头编译。

移植步骤:

1.  下载boost 。

网站链接:https://www.boost.org/users/download/   我下载的版本为1.66版本,下载完成之后,解压缩。

 2. 打开mingw ,最好是就用qt 自带的,我这里打开的是Qt5.12.6(MinGW 7.3.0 32-bit.如下图;

  3. 在命令行cd 到 boost_1_66_0/tools/build/src/engine

  4. 执行 build.bat gcc,在当前目录将会生成bin.ntx86文件夹,里面包含两个exe文件b2.exe,bjam.exe

  5. 将bin.ntx86\bjam.exe拷贝到 boost_1_66_0(该目录根据自己的情况修改) 覆盖原来的文件

  6. cd 到 boost_1_66_0 目录下

  7.  执行命令 bjam "toolset=gcc" install,执行命令会在C盘根目录下生成一个Boost文件夹。最终经过漫长的编译会在该文件生成如下的头文件与lib。

 8. 将 7 中生成的 Boost 里的 boost文件夹拷贝到你需要的地方,(可以是qt 的include下面例如F:\Qt592\5.9.2\mingw53_32\include)

9. 将7 中生成的 Boost 里的 lib下.a文件拷贝到你需要的地方,(例如 qt lib目录下  F:\Qt592\5.9.2\mingw53_32\lib)

我是分别将7中的boost 文件夹和lib文件夹拷贝到我要用工程的外层文件夹如下图的1和2。

10. 使用。 在你需要用boost的库的xxx.pro中添加 include 和lib (如果你把头文件放在了qt 的目录下面,就只需要添加lib连接库了。)

我的pro 链接如下

11. 下面是我的测试程序:

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H


//mianwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include <boost/filesystem.hpp>

using namespace std;
using namespace boost::filesystem;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    string filePath = "/work/test/testPath";
     string fileName = "test_path.txt";

     //path("/work/test/testPath/test_path.txt");
     boost::filesystem::path testFilePath(filePath);

     // 使用'/'追加路径,并把路径转化成字符串
     string fullFilePath = (testFilePath/fileName).string();
     cout << "fullFilePath:" << fullFilePath << endl;


}

MainWindow::~MainWindow()
{
    delete ui;
}


//main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

12. 执行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ppipp1109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值