1. 安装yaml库
安装yaml-cpp
yaml-cpp 是一个开源库,地址在 github 上,https://github.com/jbeder/yaml-cpp
yaml-cpp 默认构建的就是静态库,也就是 unix 类系统下的 .a 文件,如果你想构建动态库的话,就需要在 cmake 时指定。
下载解压之后
mkdir build
cd build
cmake -DYAML_BUILD_SHARED_LIBS=ON ..
编译成功后,会生成库文件,你只需要将库文件和头文件拷贝到你自己的工程当中,就可以使用了。
编译完成后,复制build文件中的动态库文件
libyaml-cpp.so
libyaml-cpp.so.0.7
libyaml-cpp.so.0.7.0
以及头文件,将整个include复制到我们的工程目录下。
2. 编写yaml工程
config中包含文件 config.yaml,内容如下:
name: frank
sex: male
age: 18
skills:
c++: 1
java: 1
android: 1
python: 1
src中包含文件
include中的文件是我们从yaml中拷贝的include的头文件, 我把yaml-cpp的中的头文件都放到include下面了,如图所示:
lib文件如图所示:
gpsmap.cpp内容如下:
#include "gpsmap.h"
void getYamlParamters()
{
YAML::Node config = YAML::LoadFile("../config/config.yaml");
cout << "name:" << config["name"].as<string>() << endl;
cout << "sex:" << config["sex"].as<string>() << endl;
cout << "age:" << config["age"].as<int>() << endl;
}
gpsmap.h
#ifndef GPSMAP_H
#define GPSMAP_H
#include <iostream>
#include <string>
#include <fstream>
#include "include/yaml.h"
using namespace std;
void getYamlParamters();
#endif
main.cpp如下
#include "gpsmap.h"
int main(int argc,char** argv)
{
getYamlParamters();
return 0;
}
CMakeLists如下
cmake_minimum_required(VERSION 3.0)
project(gpsmap)
# C++11 编译
set(CMAKE_CXX_STANDARD 11)
#${CMAKE_CURRENT_SOURCE_DIR}这是当前处理的CMakeLists.txt所在的目录,可以理解为一个绝对路径。
set(INC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/include)
set(LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/lib)
#找到工程存放头文件路径
include_directories(${INC_DIR})
#将main.cpp以及gpsmap.cpp编译成可执行文件gpsmap
add_executable(gpsmap src/main.cpp src/gpsmap.cpp)
#gpsmap链接yaml的动态库
target_link_libraries(gpsmap
${LIB_DIR}/libyaml-cpp.so)
然后在build文件中
cmake ..
make
./gpsmap
输出结果
name:frank
sex:male
age:18
部分内容参考
C++中使用yaml配置文件_Kevin_Xie86的博客-CSDN博客_c++ yml
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)