前言
本文主要是用来记录一下Linux系统下,对yaml-cpp学习及使用过程中的一些问题。供大家一起交流学习。
yaml-cpp 是一个开源库,地址为https://github.com/jbeder/yaml-cpp
yaml-cpp 是通过 CMake 来进行构建和编译的。所以你必须先安装了cmake,此步骤自己去寻找
一、yaml-cpp安装?
安装方式有两种,一种是直接clone,然后安装,另外一种是去其官网,去下载。
两者区别就是第二种可以选择版本号。
去其官网下载之后,解压到根目录。
然后
cd yaml-cpp/
mkdir build
cd build
cmake ..
make
sudo make install
最后一步的安装,一定要加sudo,要不然权限不够,库文件和头文件复制不到根目录下去。
二、编写文件
1.示例
我主要是用cmake进行编译的。
mian3文件:
//main3文件
#include <yaml-cpp/yaml.h> //yaml-cpp 头文件
#include <iostream>
int main(int argc, char** argv) {
try {
YAML::Node node = YAML::LoadFile("/home/liukaishu/catkin_ws/src/ros21/learning_topic/config/test.yaml");
std::cout << node << std::endl; //输出yaml数据
} catch (...) { //文件为非yaml格式抛出异常
std::cout << "error" << std::endl;
}
return 0;
}
test.yaml文件
//test.yaml文件
logs:
- name: root
level: info
appenders:
- type: FileLogAppender
file: "./log.txt"
- type: StdoutLogAppender
- name: system
level: warn
appenders:
- type: FileLogAppender
file: "./log.txt"
- type: StdoutLogAppender
CMakeLists
cmake_minimum_required(VERSION 2.8.3)
project(learning_topic)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
find_package(catkin REQUIRED COMPONENTS
geometry_msgs
roscpp
rospy
std_msgs
turtlesim
message_generation
)
find_package(yaml-cpp REQUIRED)
add_executable(main3 src/main3.cpp)
include_directories(/usr/local/include/yaml-cpp)
target_link_libraries(main3 /usr/local/lib/libyaml-cpp.a)
一定要链接最后两个库,这个特别重要