网上的教程五花八门,挨个试了一遍,总是会报各种错,自己一步步摸索,先将流程梳理如下:
一、准备工作
1、下载 CMake 工具
下载 CMake 工具,在安装界面,选择添加环境变量即可,其他无特别注意事项。
2、添加QT、和MINGW32编译工具的环境变量
本人的环境变量如下:
- F:\Qt\Qt5.9.0\5.9\mingw53_32\bin:这一个不设置,会报出找不到 QT5 的错误
- F:\Qt\Qt5.9.0\Tools\mingw530_32\bin:这一个是需要使用 MINGW32 编译工具
二、编译
因为纯命令行编译,测试一直在报错,所以这里我采用命令行+手工界面操作的组合方式。
1、在 qjson 文件夹下新建一个 build 文件夹
2、打开 cmake 程序,配置编译器,编译dll
其实实现的功能就是命令行:cmake -G "MinGW Makefiles" ..
,不过因为我使用该命令,总是报错,所以这里我采用界面方式配置编译器(PS:现在不报错了,就是因为环境变量没设置才导致的报错,下面 GUI 方式就当了解):
(1)以管理员身份打开 cmake 软件,配置源码路径和构建路径
(2)配置编译器
此时 build 文件夹如下:
(3)编译生成 dll 文件
打开命令行工具,进入 build 目录,输入 mingw32-make
命令
再输入 mingw32-make install
命令
即编译完成,生成的 dll 和 头文件默认在 C:\Program Files (x86)\qjson
文件夹下:
把 include 文件夹下的头文件和 dll 文件拿到项目中使用即可!
注意:生成的库文件名绝对不能改,一改就会报错!
三、使用
因为 qjson 是用 mingw32 编译器编译生成的库,所以只能项目只能在该编译器下正常运行!
(一)添加依赖
在项目下新建 include 文件夹下,将 dll 和 头文件 复制到该文件夹下:在配置文件夹下添加:
INCLUDEPATH += $$PWD/include
LIBS += -L$$PWD/include/ -llibqjson-qt5
(二)使用案例
void Widget::testJson()
{
QJson::Parser parser;
bool ok;
QString json("{"
"\"encoding\" : \"UTF-8\","
"\"plug-ins\" : ["
"\"python\","
"\"c++\","
"\"ruby\""
"],"
"\"indent\" : { \"length\" : 3, \"use_space\" : true }"
"}");
QVariantMap result = parser.parse(json.toUtf8(), &ok).toMap();
if (!ok) {
qFatal("An error occurred during parsing");
exit (1);
}
qDebug() << "encoding:" << result["encoding"].toString();
qDebug() << "plugins:";
foreach (QVariant plugin, result["plug-ins"].toList()) {
qDebug() << "\t-" << plugin.toString();
}
QVariantMap nestedMap = result["indent"].toMap();
qDebug() << "length:" << nestedMap["length"].toInt();
qDebug() << "use_space:" << nestedMap["use_space"].toBool();
}
编译无问题后,将 libqjson-qt5.dll
和 libqjson-qt5.dll.a
复制到编译后的目录,运行即可!
在 debug 和 release 模式下均可正常编译运行!