QJson编译

        想在软件上添加个配置文件, .ini 使用起来简单易用,就目前我手里的项目来说也是够用的了。网上说.ini“只支持键值模式,而且只有一层分类,无嵌套”, 当然这看人怎么用了。只要我愿意可以用出无限级(此处忽略.ini文件的最大64k限制)。之所以放弃.ini文件作为配置是因为想要实现复杂的嵌套结构需要订自己的规则,以及编写相应的解析代码。最大麻烦就是64k限制了,可能一个软件要搞好几个ini文件……

       之前也做过xml的配置,但是看看网上的介绍,xml瞬间low了很多。感觉xml做配置都已经成了历史遗留问题了……

     再看看现在的许多软件,例如微信小程序编辑器,vscode、等等,上面的配置都使用json。虽然吧对json不熟悉,但想必其作为配置方面优越性必定高于xml

     所以,基于上面方面原因跟下潮流用json。因此就耗了一天时间在QJson 和 jsoncpp两个源码编译上。jsoncpp没编译成功,由于最新版本需要c++11支持。我arm的编译器最大就支持c++0x,试了编译不过就放弃了

QJson简介

        QJson为第三方库,非Qt自带库。那为啥不用qt自带库呢?不为啥,因为我的项目里面用的是Qt4.8.5的还不支持Json解析。Qt5后才支持的。

QJson的编译

方法一:编译成库

qjson.7z下载

         编译成库的例子网上有很多,但多是用cMake编译的,这里就不多赘述了。既然QJson是为Qt提供的第三方库,那能不能直接通过创建qt工程之际编译?答案是肯定的。在qjson目录下创建qt工程:

qjson.pro内容如下:

TARGET = qjson

TEMPLATE = lib
CONFIG += shared
CONFIG += dll

#QMAKE_CXXFLAGS += -fexceptions
CONFIG += exceptions

DEFINES += QJSON_MAKEDLL
INCLUDEPATH += ./include/QJson/
INCLUDEPATH += ./src/

SOURCES += \
    src/serializerrunnable.cpp \
    src/serializer.cpp \
    src/qobjecthelper.cpp \
    src/parserrunnable.cpp \
    src/parser.cpp \
    src/json_scanner.cpp \
    src/json_scanner.cc \
    src/json_parser.cc

HEADERS +=\
    src/serializerrunnable.h \
    src/serializer.h \
    src/qobjecthelper.h \
    src/qjson_export.h \
    src/qjson_debug.h \
    src/parserrunnable.h \
    src/parser_p.h \
    src/parser.h \
    src/json_scanner.h \
    src/FlexLexer.h \
    src/stack.hh \
    src/position.hh \
    src/location.hh \
    src/json_parser.hh \
    include/QJson/Parser \
    include/QJson/QObjectHelper \
    include/QJson/Serializer \
    src/json_scanner.yy \
    src/json_parser.yy


用qt creator打开直接编译即可

方法二:直接在工程里面加入源码

 

跨不同平台的还要编译多个库太麻烦了,既然有源码直接加入工程不是更方便吗,反正这库也不大。

在qjson文件夹下创建个qjson.pri文件:

qjson.pri内容如下:

 

INCLUDEPATH += $$PWD/qjson/src/
INCLUDEPATH += $$PWD/qjson/include/QJson


#DEFINES += QJSON_MAKEDLL

#CONFIG += exceptions

QMAKE_CXXFLAGS = -std=c++0x
unix {

}

HEADERS += \
    $$PWD/qjson/src/json_parser.hh \
    $$PWD/qjson/src/location.hh \
    $$PWD/qjson/src/position.hh \
    $$PWD/qjson/src/stack.hh \
    $$PWD/qjson/src/FlexLexer.h \
    $$PWD/qjson/src/json_scanner.h \
    $$PWD/qjson/src/parser.h \
    $$PWD/qjson/src/parser_p.h \
    $$PWD/qjson/src/parserrunnable.h \
    $$PWD/qjson/src/qjson_debug.h \
    $$PWD/qjson/src/qjson_export.h \
    $$PWD/qjson/src/qobjecthelper.h \
    $$PWD/qjson/src/serializer.h \
    $$PWD/qjson/src/serializerrunnable.h \
    $$PWD/qjson/include/QJson/Parser \
    $$PWD/qjson/include/QJson/QObjectHelper \
    $$PWD/qjson/include/QJson/Serializer

SOURCES += \
    $$PWD/qjson/src/json_scanner.cpp \
    $$PWD/qjson/src/parser.cpp \
    $$PWD/qjson/src/parserrunnable.cpp \
    $$PWD/qjson/src/qobjecthelper.cpp \
    $$PWD/qjson/src/serializer.cpp \
    $$PWD/qjson/src/serializerrunnable.cpp \
    $$PWD/qjson/src/json_scanner.cc \
    $$PWD/qjson/src/json_parser.cc

主工程里面用include()将所需要的pri文件包含就来就ok了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值