CentOS7下编译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

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

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


yaml-cpp的目录结构

二、下载并安装cmake

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

cmake

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的步骤

下载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
使用cmake编译yaml-cpp

make

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

至此在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() << std::endl;
     }
  
     const std::string username = config["username"].as();
     const std::string password = config["password"].as();
     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

运行结果如下图所示:


demo1

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


demo1_test2

五、参考资料

  • https://github.com/jbeder/yaml-cpp
  • https://cmake.org/download/

你可能感兴趣的:(CentOS7下编译yaml-cpp库)