网上查到的教程对新手不太友好,特此记录Jsoncpp的使用。

本篇内容基于Win10系统 VS 2019 Community ,Centos7系统gcc 4.8.5。

Linux系统依赖Cmake编译,需要先安装Cmake环境,参考:

Linux 编译安装 Cmake_三采的博客-CSDN博客


目录

JsonCpp介绍

什么是JsonCpp?

什么是C++11?

JsonCpp集成方式

一、JsonCpp源代码——超级简单,推荐!!!

二、Windows VS 编译静态库

V1.9.2版本编译报错,未能成功编译

V1.9.3版本编译成功

三、Linux Cmake编译静态库

Windows VS JsonCpp静态库引用

Linux Cmake JsonCpp静态库引用


JsonCpp介绍

什么是JsonCpp?

https://github.com/open-source-parsers/jsoncpp

Releases · open-source-parsers/jsoncpp · GitHub

原文:

JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also preserve existing comment in unserialization/serialization steps, making it a convenient format to store user input files.

谷歌翻译:

JsonCpp是一个C++库,它允许处理JSON值,包括在字符串之间进行序列化和反序列化。 它还可以在反序列化/序列化步骤中保留现有注释,从而使其成为存储用户输入文件的便捷格式。

原文:

  • 1.y.z is built with C++11.
  • 0.y.z can be used with older compilers.
  • 00.11.z can be used both in old and new compilers.
  • Major versions maintain binary-compatibility.

谷歌翻译:

1.y.z是使用C++ 11构建的。
0.y.z可以与较早的编译器一起使用。(适用于gcc 4.+版本)
00.11.z可以在新旧编译器中使用。(适用于gcc 5.+版本)
主要版本保持二进制兼容性。

什么是C++11?

C++11是C++编程语言的第三个官方标准,正式名叫ISO/IEC 14882:2011 - Information technology Programming languages C++ 。在正式标准发布前,被称为C++0x。

支持C++11的主流编译器

  • GCC 4.8 及以上版本
  • Clang 3.1 及以上版本
  • VS 2013 及以上版本(有部分C++11特性不支持)

JsonCpp集成方式

一、JsonCpp源代码——超级简单,推荐!!!

https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)

  • 下载1.y.z版本ZIP包,解压
  • python执行amalgamate.py
  • 将dist目录下的两个.h文件和一个.cpp文件复制到项目代码文件目录下
  • 在项目中添加现有项,加入上述文件
  • 引用:#include "json.h"
  • 其他:修改jsoncpp.cpp中的头文件为对应引用:#include "json.h"

二、Windows VS 编译静态库

https://github.com/open-source-parsers/jsoncpp/wiki/Build-with-VS-2019-on-Windows

V1.9.2版本编译报错,未能成功编译

V1.9.3版本编译成功

使用 VS 2019 Community  编译

1. 下载V1.9.3版本ZIP包,解压

2. 以管理员身份运行 Developer Command Prompt for VS 2019(即开发人员命令提示符)

  • 方法一:Windows搜索Developer Command Prompt for VS 2019
  • 方法二:开始→Visual Studio 2019→Developer Command Prompt for VS 2019

3. 修改目录到JsonCpp目录

4. 新建build文件夹

5. 进入build文件夹

6. 执行命令:

cmake -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF ..

7. 在 .../build/lib/ 文件夹下生成lib库

  • 生成Release版本lib库命令:

    cmake --build . --config Release
  • 生成Debug版本lib库命令:
    cmake --build . --config Debug

三、Linux Cmake编译静态库

下载tar.gz源代码

tar zxvf jsoncpp-00.11.0.tar.gz
cd jsoncpp-00.11.0
mkdir -p build/debug
cd build/debug
cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=ON -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ../..
make

头文件位于include/json文件夹中

静态库位于lib文件夹中

注意事项:如果gcc版本为4.8.5,有可能1.y.z版本会编译失败,需要升级gcc或者编译0.y.z版本

Windows VS JsonCpp静态库引用

  • 附加包含目录(头文件目录):项目右键→属性→配置属性→C/C++→常规→附加包含目录
  • 附加库目录(库文件目录):项目右键→属性→配置属性→链接器→常规→附加库目录
  • 附加依赖项(库文件名):项目右键→属性→配置属性→链接器→输入→附加依赖项

示例:

编辑附加包含目录,新建:D:\Software\JsonCpp\jsoncpp-1.9.3\include

编辑附加库目录,新建:D:\Software\JsonCpp\jsoncpp-1.9.3\build\lib\Release

编辑附加依赖项,添加:jsoncpp.lib

引用:#include "json/json.h"

注意:

一般来讲,VS2017编译的lib库只能在不低于VS2017的环境下使用,少数情况下只能在VS2017的环境下使用,因此推荐直接使用源代码的方式集成,不会出现因静态库编译环境问题导致的报错。

自编库引用时如果配置了附加包含目录、附加库目录、附加依赖项后仍然提示找不到,可将附加包含目录、附加库目录中的绝对路径修改为相对路径再次应用。

Linux Cmake JsonCpp静态库引用

创建工程目录(不是必须,建议用此类方式管理项目)

工程结构 说明
build 编译文件夹
include 存放 .h 头文件
lib 存放 .a 链接库
src 存放 .cpp 源文件
CMakeLists.txt 编译命令

将头文件放入include文件夹

将链接库放入lib文件夹

在CMakeLists.txt中配置头文件和链接库:

# 添加头文件文件夹
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/include""${PROJECT_SOURCE_DIR}/include/json"
)
# 添加链接库文件夹
LINK_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib"
)# 生成可执行文件demo
ADD_EXECUTABLE(demo ${PROJECT_SOURCE_DIR}/src/main.cpp)
# 链接库到可执行文件demo
TARGET_LINK_LIBRARIES(demo libjsoncpp.a)

在代码中引入头文件:

#include "json/json.h"

可执行文件编译:

cd build
cmake ..
make VERBOSE=1

参考资料:

https://github.com/open-source-parsers/jsoncpp

Jsoncpp新手入门:集成与源码编译相关推荐

  1. 第8篇:Flowable-Modeler集成之Flowable-modeler源码编译

    接上一篇: 第7篇:Flowable-Modeler集成之Flowable源码编译 https://blog.csdn.net/weixin_40816738/article/details/1028 ...

  2. 第7篇:Flowable-Modeler集成之Flowable源码编译

    接上一篇: 第6篇:Flowable-Modeler详述之常见问题Table act_ge_property doesn't exist https://blog.csdn.net/weixin_40 ...

  3. Spark入门教程(二)Spark2.2源码编译及安装配置

    Spark2.2源码下载 点此进入官网下载地址: 下载Spark spark官网下载截图 //下载好后用传输工具传输到我们的linux上并解压缩 tar -zxvf spark-2.2.0.tgz 源 ...

  4. postgresql源码学习(一)—— 源码编译安装与gdb调试入门

    一. postgresql源码编译安装 因为只是用来调试的测试环境,把基本的软件装好和库建好就可以,一切从简. 1. 创建用户和目录 mkdir -p /data/postgres/base/ mkd ...

  5. 安装包没意思?带你手动下载OpenWrt源码编译安装!

    一.OpenWrt的代码管理工具 OpenWrt社区同时使用Subversion和Git两种工具来管理代码. 备注:OpenWrt的外围代码已经逐渐转到github提供的Git托管空间上,直到2016 ...

  6. 干货|TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法工程师 安装平台 1 平台 目前Tensor ...

  7. 如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文主要介绍如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib. OpenC ...

  8. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

  9. python源码编译 mingw_使用mingw32 在windows python26 下编译安装4suite-xml

    最近在研究python下xml处理技术,需要在windows python26平台下安装4suite-xml. 但是4suite-xml在官网上只提供的最新安装包只支持到python25,也就是说只能 ...

最新文章

  1. scanf的拓展用法——匹配特定字符
  2. Ubuntu18.04之boost警告报错
  3. 推荐2款在线Ascii画图工具
  4. Android 使用字符串动态获取资源ID
  5. 121道分布式面试题和答案
  6. 计算机ps特效教程,PS教程:Photoshop制作模特水滴飞溅特效
  7. BI报表工具有哪些?
  8. Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(一作解读,张和平、魏泓、秦楠点评)
  9. flutter 屏幕截图,超出屏幕部分截图
  10. linux下c/c++实例之三只允许单个程序运行
  11. 视频会议设备大比拼,创新让科技更好的服务社会!
  12. MP2459被完美替代内部集成有功率MOSFET管FS2459的60V0.5A降压IC
  13. 第二次结对编程——电梯调度算法UI贾伟王伟东
  14. 【算法千题案例】每日一练LeetCode打卡——108.独特的电子邮件地址
  15. 陶哲轩实分析:微积分基本定理剖析
  16. 5个技巧打造令人印象深刻的LOGO
  17. 记录CentOS8 开机卡住的问题解决过程
  18. mpvue【微信小程序】下拉刷新 上拉刷新
  19. Onvif/RTSP安防流媒体服务-配置CDN加速互联网直播
  20. 《惢客创业日记》2020.07.18-19(周六)谦逊的野人-马斯克

热门文章

  1. Every Object responds to
  2. 全球与中国女童装市场深度研究分析报告
  3. UML(统一建模语言)类图的六大关系
  4. error: reference to 'xx' is ambiguous
  5. c语言vc6.0编写贪吃蛇,基于VC6.0的贪吃蛇游戏源码
  6. Win7 远程window server2012 报发生身份验证错误,要求的函数不受支持
  7. 做你想要成为的那个人《本杰明·巴顿奇事》
  8. linux图像界面和命令界面切换:
  9. 用C语言实现飞机大战小游戏
  10. 网上找房平台安居客获千万美元投资