centos7 php yaml,CentOS7下编译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。如下图所示:

32b825611794f8ed709e387fca8843ad.png

git clone https://github.com/jbeder/yaml-cpp.git

0ed5e2cbe0772b0434d68af4ec042ff8.png

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

59035fe2fbdee04cac426418116a77ea.png

二、下载并安装cmake

981f48083fa08eb870e80ab772442bcc.png

20498e41f26af05577c1707764277399.png

由于是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上面的描述:

b83c2aeb7fb71c88b9037f284a4a0d33.png

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

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

282dfd284703b8b8a7184656b78e289a.png

8bf120b2a3d33fa480378b01263b1a2f.png

b8824a90d9fd28cc402c5c6d3aea425e.png

编译安装好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

31036031ca2d9bc3716684b78693b6bb.png

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

四、测试使用yaml-cpp

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

lastLogin: 2020-09-18 10:17:40

username: root

password: 123

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

#include

#include

#include

#include

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<:string>() << std::endl;

}

const std::string username = config["username"].as<:string>();

const std::string password = config["password"].as<:string>();

config["lastLogin"] = "2020-09-19 11:17:40";

std::ofstream fout("config.yaml");

fout << config;

return 0;

}

编译并运行demo程序,

在demo1.cpp和config.yaml同级目录下执行如下命令:

g++ demo1.cpp -o demo1 -std=c++11 -I/usr/local/include -L/usr/local/lib64 -lyaml-cpp

编译demo1.cpp生成对应的demo1可执行文件

然后运行demo1可执行文件:

./demo1

运行结果如下图所示:

e9af9ba5345561c3c52c14940a0b2f7e.png

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

b0d01849f93a2aa710ac24b998ac40e3.png

五、参考资料

本文同步分享在 博客“雪域迷影”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值