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了

  • 8
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值