Cpp(十一) yaml-cpp的使用

文章目录

  • YamlCpp
    • #1 环境
    • #2 安装
    • #3 使用
      • #3.1 Cmake配置文件
      • #3.2 使用

YamlCpp

#1 环境

macOS 10.15.5
Cmake 

#2 安装

git clone git@gitee.com:Coxhuang/yaml-cpp.git
cd yaml-cpp
mkdir build
cd build
# 二选一
# 静态库 
cmake ..
# 动态库
cmake ..  -DBUILD_SHARED_LIBS=ON
make 
sudo make install

安装后,库文件和头文件路径:

头文件: /usr/local/include/yaml-cpp

库文件: /usr/local/lib/libyaml-cpp.a

#3 使用

#3.1 Cmake配置文件

cmake_minimum_required(VERSION 3.17)
project(yaml_demo)

set(CMAKE_CXX_STANDARD 14)

include_directories(/usr/local/include)

find_package (PkgConfig REQUIRED)
pkg_check_modules(YAMLCPP REQUIRED yaml-cpp) # 查找yaml-cpp 

link_directories(
    ${YAMLCPP_LIBRARY_DIRS} # 添加yaml-cpp库文件路径 
)

add_executable(yaml_demo main.cpp)

target_link_libraries(yaml_demo
    ${YAMLCPP_LIBRARIES} # 将yaml-cpp库连接到yaml_demo可执行文件中 
)

#3.2 使用

  • 新建yaml文件
name: Cox
sex: male
age: 18

skills:
  C++: 1
  Python: 1
  • 使用
#include 
#include "yaml-cpp/yaml.h"

int main() {
    YAML::Node config = YAML::LoadFile("../config.yaml");
    std::cout << "name:" << config["name"].as<std::string>() << std::endl;
    std::cout << "sex:" << config["sex"].as<std::string>() << std::endl;
    std::cout << "age:" << config["age"].as<int>() << std::endl;

    for (auto foo : config["skills"]) {
        std::cout << foo.first.as<std::string>() << ":" << foo.second.as<bool>() << std::endl;
    }

    return 0;
}

输出:

name:Cox
sex:male
age:18
C++:1
Python:1

你可能感兴趣的:(Cpp,yaml-cpp,yaml,配置文件)