前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7下编译yaml-cpp库

CentOS7下编译yaml-cpp库

作者头像
ccf19881030
发布2020-09-21 18:07:47
2.7K0
发布2020-09-21 18:07:47
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客

CentOS7下编译yaml-cpp

  • 一、下载[yaml-cpp](https://github.com/jbeder/yaml-cpp)源代码
  • 二、下载并安装cmake
  • 三、使用cmake编译yaml-cpp
  • 四、测试使用yaml-cpp
  • 五、参考资料

一、下载yaml-cpp源代码

yml文件和yaml文件是目前比较常用的配置文件,Java中的SpringBoot的application.yml配置使用的就是这种格式,另外诸如nodejs和g欧登语法对于yaml文件都有很好的支持。 yaml-cpp是一个yaml配置文件的C++解析库,其下载地址为:https://github.com/jbeder/yaml-cpp 在Windows10中使用VS2017编译yaml-cpp库前,需要去Github上面下载对应的yaml-cpp源代码。目前的yaml-cpp最新版本是yaml-cpp-0.6.0。如下图所示:

yam-cpp-0.6.0
yam-cpp-0.6.0
代码语言:javascript
复制
git clone https://github.com/jbeder/yaml-cpp.git
yaml-cpp
yaml-cpp

我在Windows10中下载好yaml-cpp源代码将其放在相应的目录下,最后下载的文件目录结构如下图所示:

yaml-cpp的目录结构
yaml-cpp的目录结构

二、下载并安装cmake

去官网https://cmake.org/download/

cmake
cmake
cmake_linux
cmake_linux

由于是CentOS所以选择对应的Linux源代码cmake-3.18.2.tar.gz或者对应的cmake-3.18.2-Linux-x86_64.tar.gz源代码以及编译脚本cmake-3.18.2-Linux-x86_64.sh 下载到对应的目录下执行cmake-3.18.2-Linux-x86_64.sh脚本安装cmake即可。另外需要配置好cmake的环境变量,将cmake命令加到系统的环境变量种。

三、使用cmake编译yaml-cpp

在CentOS7等Linux发行版下编译yaml-cpp是非常简单的,可以参考github上面的描述:

Linux下编译yaml-cpp的步骤
Linux下编译yaml-cpp的步骤

下载yaml-cpp源代码,并且安装好了cmake之后(我安装的cmake版本是cmake 3.16.2),开始编译yaml-cpp,命令如下图所示:

代码语言:javascript
复制
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
cd yaml-cpp
mkdir build
cmake .. -DYAML_BUILD_SHARED_LIBS=ON
make
make install
使用cmake编译yaml-cpp
使用cmake编译yaml-cpp
make
make
make install
make install

编译安装好yaml-cpp库后会在build目录生成libyaml-cpp.so.0.6.3动态库以及yaml-cpp.pc等文件,可以从yaml-cpp.pc文件中看出yaml-cpp库默认的安装路径为:/usr/local目录,头文件安装路径为:/usr/local/include,库文件安装路径为:/usr/local/lib64

make install
make install

至此在CentOS7下成功编译生成了yaml-cpp的lib动态库,并且安装到/usr/local目录下,可以使用yaml-cpp进行yaml或yml的解析和测试了。

四、测试使用yaml-cpp

首先在编写代码前,写一个config.yaml配置文件,其内容如下:

代码语言:javascript
复制
lastLogin: 2020-09-18 10:17:40
username: root
password: 123

相关C++示例代码demo1.cpp如下:

代码语言:javascript
复制
 #include <yaml-cpp/yaml.h>
 #include <iostream>
 #include <string>
 #include <fstream>
 using std::cout;
 using std::endl;
 
 int main(int argc, char* argv[])
 {
     YAML::Node config = YAML::LoadFile("config.yaml");
  
     if (config["lastLogin"]) {
          std::cout << "Last logged in: " << config["lastLogin"].as<std::string>() << std::endl;
     }
  
     const std::string username = config["username"].as<std::string>();
     const std::string password = config["password"].as<std::string>();
     config["lastLogin"] = "2020-09-19 11:17:40";
  
     std::ofstream fout("config.yaml");
     fout << config;
  
     return 0;
 }

编译并运行demo程序, 在demo1.cpp和config.yaml同级目录下执行如下命令:

代码语言:javascript
复制
g++ demo1.cpp -o demo1 -std=c++11 -I/usr/local/include -L/usr/local/lib64 -lyaml-cpp

编译demo1.cpp生成对应的demo1可执行文件 然后运行demo1可执行文件:

代码语言:javascript
复制
./demo1

运行结果如下图所示:

demo1
demo1

可以重新查看config.yaml文件,发现其中的lastLogin字段被修改成了2020-09-19 11:17:40

demo1_test2
demo1_test2

五、参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CentOS7下编译yaml-cpp
  • 一、下载yaml-cpp源代码
  • 二、下载并安装cmake
  • 三、使用cmake编译yaml-cpp
  • 四、测试使用yaml-cpp
  • 五、参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档