jsoncpp+cmake使用

news2024/9/24 5:30:48

目录

  • 写在前面
  • 准备
    • clone源码
    • 编译
  • 使用
    • 编译运行
  • 参考

写在前面

1、本文内容
jsoncpp编译及其使用

2、平台
windows10, linux
3、转载请注明出处:
https://blog.csdn.net/qq_41102371/article/details/129300456

准备

clone源码

mkdir json
cd json
git clone https://github.com/open-source-parsers/jsoncpp.git

或者直接下载:https://codeload.github.com/open-source-parsers/jsoncpp/zip/refs/heads/master
解压到json文件夹下

编译

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="D:/carlos/install/jsoncpp" -S ./jsoncpp-master -B ./build
cmake --build ./build --config Release --target install

DCMAKE_INSTALL_PREFIX=D:/carlos/install/jsoncpp是指定编译完成后的安装路径,根据需要自行修改

使用

mkdir jsontest
cd jsontest
mkdir src

将cpp和CMakeLists.txt放入jsontest/src文件夹
把compile.bat和run.bat放进jsontest文件夹
在这里插入图片描述

jsontest.cpp

#include <iostream>
#include <fstream>

#include <json/json.h>

bool writeMapInfo(std::string file_path, Json::Value &root)
{

    std::cout << "\n\nwrite MapInfo to json file" << std::endl;

    Json::Value info;
    std::string name;
    int age;

    // 1
    name = "abc";
    age = 24;
    info["name"] = name;
    info["age"] = age;
    info["arr"][0] = 5.5;
    info["arr"][3] = 76.1;
    info["arr"][1] = 9.2;

    root["p1"] = info;

    // 2
    name = "def";
    age = 55;
    info["name"] = name;
    info["age"] = age;
    info["arr"][0] = 55.6;
    info["arr"][2] = 15.3;
    info["arr"][1] = 3.6;

    root["p2"] = info;

    Json::StyledWriter style_writer;
    std::string str = style_writer.write(root);

    std::ofstream file_out;
    file_out.open(file_path);
    if (!file_out.is_open())
    {
        std::cout << "open file" << file_path <<" failed!" << std::endl;
        return false;
    }
    {
        file_out << str;
        file_out.close();
    }
    return true;
}

bool loadMapInfo(std::string file_path, Json::Value &root)
{
    std::cout << "\n\nload MapInfo from json file" << std::endl;

    std::ifstream file_in;
    file_in.open(file_path);
    if (!file_in.is_open())
    {
        std::cout << "open " << file_path << " failed" << std::endl;
        return false;
    }
    else
    {
        file_in >> root;
        std::cout << "load from file:\n"
                  << root << std::endl;
    }
    return true;
}

int main(){
    Json::Value root;
    writeMapInfo("./test.json", root);
    loadMapInfo("./test.json", root);
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.18)

project(Jsontest LANGUAGES C CXX)

set(JSONCPP_DIR D:/carlos/install/jsoncpp)

include_directories(${JSONCPP_DIR}/include)
link_directories(${JSONCPP_DIR}/lib)

add_executable(jsontest ./jsontest.cpp)
target_link_libraries(jsontest jsoncpp)

compile.bat

cmake -S ./src -B ./build
cmake --build ./build --config Release --target ALL_BUILD

run.bat

@REM carlos 202303
set PATH=%PATH%;D:\carlos\install\jsoncpp\bin
.\build\Release\jsontest.exe

编译运行

./compile.bat
./run.bat

输出结果:
在这里插入图片描述
linux上将上述命令对应路径修改好就行

参考

https://blog.csdn.net/jiesunliu3215/article/details/125970395
https://blog.csdn.net/King_weng/article/details/88430199

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件测试】老鸟告诉我内-幕,jmeter性能测试压力测试有多香?薪资真翻2倍......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 压力测试&#xff0…

Composer安装与配置教程

一、windows系统下安装安装Composer教程下载安装php 方法一、下载Composer安装包安装完成后CMD运行 composer --version 命令查看版本号&#xff0c;正常显示版本号则表示安装成功3、方法二、CMD命令安装composer安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php…

计算机网络安全基础知识1:渗透测试,网络连接的核心TCP/IP体系结构,公网,内网,ip地址和端口

计算机网络安全基础知识1&#xff1a;渗透测试&#xff0c;网络连接的核心TCP/IP体系结构&#xff0c;公网&#xff0c;内网&#xff0c;ip地址和端口 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去…

frp内网穿透实验

Frp (Fast Reverse Proxy) 是比较流行的一款。FRP 是一个免费开源的用于内网穿透的反向代理应用&#xff0c;它支持 TCP、UDP 协议&#xff0c; 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站&#xff0c; 帮你实现 公网 ←→ FRP(服务器) ←→ 内网…

数字化创新应用发布加速,JFrog DevOps 正当时

出品 | CSDN 云计算 数字化进程&#xff0c;每天都在发生。 对于技术开发来说&#xff0c;从业务和场景探索和快速开发创新应用&#xff0c;将带来整个开发流程的全新挑战。根据 IDC 分析&#xff0c;到 2024 年时&#xff0c;全球将会有 5.2 亿个软件应用。而超过 60%的企业每…

【教学类-07-06】20230302《破译电话号码-图形篇(图形固定列不重复)》(三款输入版)

效果展示1、适合中班默写学号——有姓名 有班级&#xff0c;无学号&#xff0c;适合中班幼儿2、适合大班幼儿默写名字——有学号&#xff0c;有班级&#xff0c;无姓名&#xff0c;适合初学者描字&#xff08;小班、中班、大班&#xff09;——名字、学号、班级都有&#xff08…

软件测试需要学习什么?好就业么

软件测试需要学习测试环境、网络环境、windows环境、数据库管理、编程技巧&#xff08;java编程设计&#xff0c;脚本语言&#xff0c;设计工具&#xff0c;XML编程、软件测试技术&#xff0c;测试理论&#xff0c;方法&#xff0c;流程&#xff0c;文档写作&#xff0c;测试工…

微信小程序|基于小程序+云开发制作一个租房小程序

经济发展的同时伴随着大批人群的流动,租房需求一直是持久不衰的话题,如何租好房,好租房,跟随此文一起制作一个租房小程序,让租房不再困难。 一、小程序1. 创建小程序2. 首页3. 房源列表页4. 房源详情页5. 个人中心页</

mysql双机互为主从配置记录

1.准备2台机器 server1 192.168.0.37 server2 192.168.0.119 2.安装mysql&#xff0c;我这里用的docker-compose server1的docker-compose version: 3 services:db:build: ./buildcontainer_name: dbimage: mysql:5.6restart: alwayscommand:--character-set-serverutf8mb4…

python使用openpyxl处理excel表格数据

python使用openpyxl处理excel表格数据前言一、安装openpyxl包二、读取excel数据1. 获取excel表格的页码2. 获取excel表格某一行的数据3. 获取excel表格某一列的数据4. 获取excel表格n行n列的数据5. 获取excel表格某一格的数据三、把数据写入excel数据中前言 对于excel表格&…

探讨==和equals的区别和联系,为什么equals()和hashcode()要一起重写?

(一) 探讨和equals的区别和联系&#xff1f; 面试考题&#xff1a;《关于和equals的区别》&#xff0c;该怎么回答完美呢&#xff1f; 可以这样回答&#xff1a; &#xff08;1&#xff09;对于 简单来说比较的是指相等 ①&#xff1a;对于基本数据类型,则直接比较的是对应…

项目实战-瑞吉外卖day01(B站)

瑞吉外卖-Day01课程内容软件开发整体介绍瑞吉外卖项目介绍开发环境搭建后台登录功能开发后台退出功能开发1. 软件开发整体介绍作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程&#xff0c; 以及软件开发过程中涉及到的岗位角色&#xff0c;角色的分工、职责&am…

Vland:像乐高一样搭建元宇宙|开发者说

社交达人金秋远每年会组织和参加数以百计的活动——既有线下也有线上&#xff0c;既有德州扑克也有创业交流&#xff0c;既有客户回访也有校友叙旧。 活跃于各种社交活动&#xff0c;是金秋远在贝恩咨询为 500 强企业担任战略顾问时养成的习惯。由于喜欢研究「人与人的连接」&…

如何用Python把篮球和鸡联系起来

文章目录画个球让球转起来画个球 不管篮球和不和鸡联系起来&#xff0c;都首先得有个球&#xff0c;或者说要有一个球面&#xff0c;用参数方程可以表示为 xrcos⁡ϕcos⁡θyrcos⁡ϕsin⁡θzrsin⁡ϕ\begin{aligned} x & r\cos\phi\cos\theta\\ y & r\cos\phi\sin\th…

STM32 EXTI外部中断

本文代码使用 HAL 库。 文章目录前言一、什么是外部中断&#xff1f;二、外部中断中断线三、STM32F103的引脚复用四、相关函数&#xff1a;总结前言 一、什么是外部中断&#xff1f; 外部中断 是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时&#xff0c;单片…

13 nuxt3学习(新建页面 内置组件 assets 路由)

新建页面 Nuxt项目中的页面是在 pages目录 下创建的 在pages目录创建的页面&#xff0c;Nuxt会根据该页面的目录结构和其文件名来自动生成对应的路由。页面路由也称为文件系统路由器&#xff08;file system router&#xff09;&#xff0c;路由是Nuxt的核心功能之一 方式一…

DHTMLX Suite 8.0 重大发布,新增更多新主题、热图图表、辅助功能支持功能

DHTMLX Suite 是一个用于构建跨浏览器Web应用和移动应用的强大JavaScript UI库。DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件&#xff0c;这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Spreadsheet正版试…

动态网站开发讲课笔记04:Servlet基础

文章目录零、本节学习目标一、Servlet基础&#xff08;一&#xff09;Servlet概述1、Servlet是什么2、Servlet容器3、Servlet应用程序的体系结构&#xff08;二&#xff09;Servlet的特点1、功能强大2、可移植3、性能高效4、安全性高5、可扩展&#xff08;三&#xff09;Servle…

数据结构刷新知识总结,为了与题目分开,特地在这里开一篇博客

文章目录二叉树、树、森林的转换二叉树的五个特性常用算法总结常用算法详解图的概念堆排序哈希查找二叉树、树、森林的转换 树转二叉树 二叉树转树 森林转二叉树 二叉树转森林 二叉树的五个特性 性质1&#xff1a;在二叉树的第i层上至多有2i-1个结点性质2&#xff1a;深度为…

Android动态获取权限(详细教程附代码)

Android动态获取权限概述动态获取权限具体实现layout布局代码回调函数onRequestPermissionsResult权限判断工具类清单文件方式一&#xff1a;懒汉式方式二&#xff1a;饿汉式概述 如果是android6.0以下的版本&#xff0c;只需要在manifest声明对应的权限即可。但是这样会大大降…