文章目录
前言
网上现有教程存在各种问题,比如
- jsoncpp是很老的版本。
- 直接运行高版本安装包中提供的python脚本,在使用时会导致链接库等问题。
- 使用CMake编译,需要用到CMakeLists.txt,而网上没有教你怎么写的。
- 最后,最核心的一个问题,网上的教程没有说清楚CMake之后要怎么在项目中使用。
tip: 要首先安装好cmake,网上有很多教程。
可以参考这篇文章:
https://blog.csdn.net/freemote/article/details/103454801
1. 下载jsoncpp
https://github.com/open-source-parsers/jsoncpp/releases
在这个里面有各种版本的jsoncpp,选择自己需要的版本,点进去之后拉倒最下面,选择tar.gz文件下载。
2. 解压并安装
将下载好的jsoncpp压缩文件拷贝到ubuntu虚拟机中,用tar zxvf
命令解压,得到一个文件夹。
3.编译
进入到这个文件夹中,新建build文件夹,进入build文件夹,执行cmake ..
,完毕后执行make
命令,然后再执行make install
命令。(注意make install命令可能需要sudo权限,否则会报错)
4.使用
(1)创建项目文件夹,编写main.cpp文件。如下:
#include <json/json.h>
#include <fstream>
#include <assert.h>
#include <iostream>
#include "json/json.h"
void demo_simple();
int main()
{
demo_simple();
return 0;
}
void demo_simple()
{
std::ifstream ifs;
ifs.open("/home/hanson/testForDACP/testJsoncpp/config.json");
assert(ifs.is_open());
Json::Reader reader;
Json::Value root;
if (!reader.parse(ifs, root, false))
{
std::cerr << "parse failed \n";
return;
}
std::string name = root["name"].asString(); // 实际字段保存在这里
int age = root["age"].asInt(); // 这是整型,转化是指定类型
std::cout << name << std::endl;
std::cout << age << std:: endl;
}
tip: 注意将json文件的路径改过来。
(2)新建一个config.json的json文件:
{
"name":"hanson",
"age":25
}
(3)创建CMakeLists.txt文件,内容如下:
cmake_minimum_required(VERSION 3.4.1) //允许最小版本
project(main)//项目名称
add_executable(main main.cpp) //main.app是自己编写的测试文件,前面的main表示生成可执行文件main
TARGET_LINK_LIBRARIES(main libjsoncpp.so.1.9.0) //添加动态链接库,如果没有这一条,编译会报错。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y") //
tip:用的时候不要加注释,否则报错。
(4)新建build文件夹
进入build文件夹,执行cmake ..
,其中的两个点表示cmake使用的是上一层目录中的CMakeLists文件。
成功后执行make
命令,此时已经在build中生成了名称为main的可执行文件。
./main
执行即可。
后记
踩了很多坑总结出来的,里面的tip都是改了好久的错误,一定要注意。
我按着这个流程又重新做了一遍,是可以的。