C++项目经验(6)——yaml-cpp的安装、报错解决及使用

目录

背景

一、安装

1.1 直接安装到系统

1.2 安装到项目内

二、使用

三、报错解决


背景

yaml的使用还是挺重要的,一是省去了你每次配置参数就得重编译的麻烦,二是有助于批量自动化跑程序。笔者就是在构建批量自动化算指标的过程中,接触到了这个东西。

一、安装

1.1 直接安装到系统

项目地址:https://github.com/jbeder/yaml-cpp

拉取项目到本地,编译,安装

git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build && cd build
cmake -D BUILD_SHARED_LIBS=ON ..
make -j16
sudo make install

1.2 安装到项目内

我更喜欢用这种方式,通用性更好

依旧是拉取项目,编译生成库文件

git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build && cd build
cmake -D BUILD_SHARED_LIBS=ON ..
make -j16

然后此时,将build文件夹下的libyaml-cpp.so,libyaml-cpp.so.0.x,libyaml-cpp.so.0.x.0三个动态库文件,拷贝到你项目中的lib文件夹内,再把build上级文件夹 include/yaml-cpp放入你项目的第三方库头文件夹下,然后,按照我第一篇博客的方法,配置好CMakeLists.txt就好

C++项目经验(1)——切实理解#include<>和#include““的区别,并利用它“抠库”

二、使用

参考博客:c++ 开发中利用yaml-cpp读写yaml配置文件_frank909的博客-CSDN博客_yaml.cpp

写得比较全

三、报错解决

可能会出现以下错误:

In function 'YAML::Node::Scalar[abi:cxx11]() const':
undefined reference to 'YAML::detail::node_data::empty_scalar[abi:cxx11]'
...

可能是已经在系统里安装过,重复导致的,可以locate一下

locate libyaml-cpp.so

可能会发现系统的安装路径,然后你项目里include时,不小心弄到系统里去了,而不是项目内的yaml-cpp

解决方案:保证CMakeLists.txt的头文件路径和项目内的#include"yaml-cpp/yaml.h"是优先指向项目内的yaml文件,而不是系统,不然就只能删除系统中的yaml了

你可能感兴趣的:(c++)