windows vscode jsoncpp cmake c++ 构建项目

2024-01-20 11:20

本文主要是介绍windows vscode jsoncpp cmake c++ 构建项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jsoncpp的编译和使用推荐文章:jsoncpp的编译和使用 | 爱编程的大丙 (subingwen.cn)icon-default.png?t=N7T8https://www.subingwen.cn/cpp/jsoncpp/从这个链接下载jsoncpp-master:https://github.com/open-source-parsers/jsoncpp

可以把这个文件夹名字改成jsoncpp,改短点 (●'◡'●),路径为D:/jsoncpp

下载 cmake 工具:我下载的是3.28.1版本的

先创建一个文件夹output-project,路径为D:\Work\output-project;

接着运行cmake-gui.exe

选好source code路径和build the binaries路径,点击configure,由于我的电脑安装的是visual stdio 2022, 所以我选择vs2022的,最后点击Generate

1.制作lib文件夹

(1)查看生成的文件,在output-project文件夹中lib中的Debug中有jsoncpp.lib文件

(2)在output-project文件夹中bin中的Debug中有jsoncpp.dll文件

(3)我们可以在桌面先创建一个文件夹叫lib,用来存放拷贝出来的jsoncpp.lib文件和jsoncpp.dll文件 

2. 制作inlude文件夹

(1)在桌面先创建一个文件夹叫include文件夹,我们在D:/jsoncpp/include/son中的这些文件拷贝到include中

3.制作src文件夹

(1)在桌面先创建一个文件夹叫src文件夹,我们在D:/jsoncpp/src/lib_json中的这些文件拷贝到src中

为了后续更好的管理jsoncpp的文件和其他库,我们可以在src中创建一个json文件夹,将*.cpp的文件都剪切进去。至此,我们就完成了这个项目的基本结构

PS D:\Work\mysqlConnPool> tree
卷 Data 的文件夹 PATH 列表
卷序列号为 02DE-5B5B
D:.
├─.vscode
├─include
│  └─json
├─lib
└─src└─json
PS D:\Work\mysqlConnPool> 

test.cpp

#include <iostream>
#include "json.h"
#include <fstream>
using namespace std;
using namespace Json;void writeJson() {Value root;root.append("luffy");root.append(19);root.append(170);root.append(false);Value subArray;subArray.append("ace");subArray.append("sabo");root.append(subArray);Value subObj;subObj["sex"] = "man";subObj["girlfriend"] = "Hancock";root.append(subObj);
#if 1string json = root.toStyledString();
#elseFastWriter w;string json = w.write(root);
#endif// write -> ofstream// read -> ifstreamofstream ofs("./test.json");ofs << json;ofs.close();return ;
}void readJson() {ifstream ifs("test.json");Reader rd;Value root;rd.parse(ifs,root);if(root.isArray()){for(unsigned i = 0; i < root.size(); ++i){Value item = root[i];if(item.isInt()) {cout<<item.asInt()<<", ";}else if(item.isString()){cout<<item.asString()<<", ";}else if(item.isBool()){cout<<item.asBool()<<", ";}else if(item.isArray()){for(unsigned j=0; j<item.size(); ++j){cout<<item[j].asString()<<", ";}}else if(item.isObject()){Value::Members keys = item.getMemberNames();for(int k=0; k<keys.size(); ++k) {cout<<keys.at(k)<<":"<<item[keys[k]]<<",";}}cout<<endl;}}
}
int main() {writeJson();readJson();cout<<"heheda"<<endl;Value root;return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.28.1)
project(test)# 添加头文件路径
include_directories(${PROJECT_SOURCE_DIR}/include/json)
# 源文件
aux_source_directory(${PROJECT_SOURCE_DIR}/src/json SRC_LIST)# 添加库文件路径
link_directories(${PROJECT_SOURCE_DIR}/lib)
# 添加可执行文件
add_executable(app test.cpp ${SRC_LIST})
target_link_libraries(app jsoncpp)# 指定输出的路径
set(HOME ${PROJECT_SOURCE_DIR}) # 定义一个变量用于存储一个绝对路径
set(EXECUTABLE_OUTPUT_PATH ${HOME}/bin) # 将拼接好的路径值设置给 EXECUTABLE_OUTPUT_PATH 变量

然后我们把项目中的src文件夹中的json文件夹中的cpp文件的包含头文件改一下,改成如下格式: 

PS D:\Work\mysqlConnPool> mkdir build目录: D:\Work\mysqlConnPoolMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2024/1/19     17:22                buildPS D:\Work\mysqlConnPool> cd build
PS D:\Work\mysqlConnPool\build> cmake ..
-- Configuring done (0.2s)
-- Generating done (0.0s)
-- Build files have been written to: D:/Work/mysqlConnPool/build
PS D:\Work\mysqlConnPool\build> make
[ 20%] Building CXX object CMakeFiles/app.dir/test.cpp.obj
[ 40%] Building CXX object CMakeFiles/app.dir/src/json/json_reader.cpp.obj
[ 60%] Building CXX object CMakeFiles/app.dir/src/json/json_value.cpp.obj
[ 80%] Building CXX object CMakeFiles/app.dir/src/json/json_writer.cpp.obj
[100%] Linking CXX executable D:\Work\mysqlConnPool\bin\app.exe
[100%] Built target app
PS D:\Work\mysqlConnPool\build> cd ../bin
PS D:\Work\mysqlConnPool\bin> .\app.exe
luffy, 
19,
170,
0,
ace, sabo,
girlfriend:"Hancock",sex:"man",
heheda
PS D:\Work\mysqlConnPool\bin>

 我们可以在该项目的bin目录下看到生成一个test.json文件

["luffy",19,170,false,["ace","sabo"],{"girlfriend" : "Hancock","sex" : "man"}
]

本项目完整代码: 【免费】windowsvscodejsoncppcmakec++构建项目资源-CSDN文库

这篇关于windows vscode jsoncpp cmake c++ 构建项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625848

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻