Ubutu22.04系统安装配置yaml-cpp库并在QT中使用

Ubutu22.04系统安装配置yaml-cpp库

yaml-cpp库是一个开源库,用于C++项目中读取yaml格式的配置文件,其项目地址为:https://github.com/jbeder/yaml-cpp
点击项目地址,可以选择下载为.zip压缩包(yaml-cpp-master.zip)。

安装解压工具:wen:~$ sudo apt-get install unzip
在压缩包所在地址右键选择“在终端打开”
或者按CTRL + ALT + T组合键打开终端,使用cd命令到压缩包所在文件夹下,如压缩包在 /home/wen/packages路径下为:wen:~$ cd packages
解压文件到当前文件目录下:wen:~/packages$ unzip yaml-cpp-master.zip

在解压后的文件夹中创建build文件夹
wen:~/packages$ mkdir build
wen:~/packages$ cd build
wen:~/packages/build$ cmake -DYAML_BUILD_SHARED_LIBS=ON ..
无错误进入下一步
wen:~/packages/build$ make
无错误进入下一步
wen:~/packages/build$ sudo make install
完成后在/usr/local/lib文件目录下可找到 libyaml-cpp.so等文件

在QT项目中使用

在CMakeList.txt中添加相关语句

set(CMAKE_PREFIX_PATH "/usr/local")

set(YAML_DIR ${CMAKE_PREFIX_PATH}/include/yaml-cpp)
set(YAML_SO_DIR ${CMAKE_PREFIX_PATH}/lib)

link_directories(${YAML_SO_DIR})
include_directories(${YAML_DIR})

find_package(yaml-cpp REQUIRED)
include_directories(${YAML_CPP_INCLUDE_DIR})
find_package(PkgConfig)
pkg_check_modules(YAMLCPP REQUIRED yaml-cpp>=0.5)

在target_link_libraries()中添加

${YAMLCPP_LIBRARIES}

在使用yaml-cpp库的文件中引入头文件

#include "yaml.h"

yaml文件解析

Node有以下几种类型
1、Null空节点
2、Sequence序列,类似于一个Vector,对应YAML格式中的数组
3、Map,类似标准库中的Map,对应YAML格式中的对象
4、Scalar 标量,对应YAML格式中的常量
通过 NodeType 定义了 Node 的可能类型

namespace YAML {
struct NodeType {
  enum value { Undefined, Null, Scalar, Sequence, Map };
};
}

各枚举值对应为:0 未定义、1 空、 2 标量、3 序列、4 字典

YAML::Node test1 = YAML::Load("[1,2,3,4]");
cout << " Type: " << test1.Type() << endl;

YAML::Node test2 = YAML::Load("1");
cout << " Type: " << test2.Type() << endl;

YAML::Node test3 = YAML::Load("{'id':1,'degree':'senior'}");
cout << " Type: " << test3.Type() << endl;

结果为:

Type: 3
Type: 2
Type: 4

生成 Node 的形式有很多种,loadFile() 是最常见的一种。
Node LoadFile(const std::string& filename) ,其中filename 就是yaml文件的路径。

有了 Node 之后,所有的信息都可以检索到。比如 name.
cout << “name:” << config[“name”].as() << endl;其中as()表示将解析的内容转换成 string 类型,也可以转换成其它类型。

参考链接:
对YAML::LoadFile的引用未定义
利用 yaml-cpp 开源库读写 yaml 配置文件—— 读写部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值