说明
之前在 Linx 系统里用 JsonCpp ,记录了安装使用过程。
CentOS下Jsoncpp安装配置
Windows 上源码编译 JsonCpp 实际也不复杂,只是在使用习惯、命令方法上略有差别导致在不同系统上操作显得有些不自然。Windows 上编译安装各种 c/c++
开源软件/库,通常推荐的都是 Visual Studio 软件(MSVC 编译器),更多的教程讲的也都是基于 MSVC 的方法。而本文选择
- 基于
Windows 10
操作系统 - 使用
CMake
构建项目 - 使用
MinGW
编译 Jsoncpp 源码,生成动/静态链接库 - 使用
Qt
进行测试
当然参考本教程前需准备好如下开发环境
Qt(MinGW) for Windows
CMake
没准备好的可以参考下面链接的相应小节
CGAL 在 Windows QT(MinGW) 的环境搭建
进入正题。
1.下载源码
到 Github 上下载源码到本地,当前版本 v1.9.4
https://github.com/open-source-parsers/jsoncpp
2. 生成Makefile
打开图形界面 cmake-gui
,填入源码路径和生成二进制文件路径,然后 Configure 进行检查和配置
- E:/SweetYaya/jsoncpp/jsoncpp-1.9.4
- E:/SweetYaya/jsoncpp/build
检查和配置完成后点击 Generate 生成 Makefile
结果如下
3. 编译与安装
以管理员身份运行 cmd ,进入 build/
目录,执行
E:\SweetYaya\jsoncpp\build> mingw32-make.exe
Scanning dependencies of target jsoncpp_lib
[ 5%] Building CXX object src/lib_json/CMakeFiles/jsoncpp_lib.dir/json_reader.cpp.obj
...
Testing MemberTemplateIs/BehavesSameAsNamedIs: OK
All 118 tests passed
[100%] Built target jsoncpp_test
然后
E:\SweetYaya\jsoncpp\build> mingw32-make.exe install
[ 23%] Built target jsoncpp_lib
....
-- Up-to-date: C:/Program Files (x86)/jsoncpp/include/json/version.h
-- Up-to-date: C:/Program Files (x86)/jsoncpp/include/json/writer.h
4. 测试
创建 Qt console 项目,主文件 main.cpp
如下
#include <QCoreApplication>
#include <fstream>
#include <iostream>
#include <json/json.h>
#include <cassert>
#include <errno.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
ifstream ifs;
ifs.open("jsontest.json");
assert(ifs.is_open());
Json::Reader reader;
Json::Value root;
if (!reader.parse(ifs, root, false))
{
cout << "reader parse error: " << strerror(errno) << endl;
return -1;
}
string name;
int age;
int size;
size = root.size();
cout << "total " << size << " elements" << endl;
for (int i = 0; i < size; ++i)
{
name = root[i]["name"].asString();
age = root[i]["age"].asInt();
cout << "name: " << name << ", age: " << age << endl;
}
return a.exec();
}
配置文件 .pro
添加如下链接
LIBS += -LE:\SweetYaya\jsoncpp\build\bin\ -ljsoncpp
INCLUDEPATH += E:\SweetYaya\jsoncpp\build\include\
最后在项目编译生成文件夹下创建一个测试文件 jsontest.json
[{"name":"Long", "age":6}]
编译运行结果如下,OK
.
.
.
.
.
.
桃花仙人种桃树,又摘桃花换酒钱_