ubuntu16.04yaml-cpp의 설치 및 사용
1. 설치:
갱1: 반드시 0.5.2버전을 필요로 합니다. 제가 전에 다운로드한 0.5.3버전은 핵심 부분의 오류를 보고합니다.
공식git원https://github.com/jbeder/yaml-cpp/releases/tag/release-0.5.2tar. 다운로드gz의 원본 패키지는 다음 절차를 따릅니다.
cd yaml-cpp #
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
갱2:make 완료 시 반드시make install, 자신의cp를 원한다면/usr/local/lib와/usr/local/include 폴더 아래에 있어야 합니다./usr/lib와/usr/include 폴더가 아니라/usr/include 폴더에 있어야 합니다. 그렇지 않으면 라이브러리를 찾을 수 없고yaml을 찾을 수 없습니다.h 파일.
2. 사용:
yaml-cpp 5.0 버전 이후 사용 변경
버전 5.0 이전:
1. YAML::Parser parser(fin);
2. YAML::Node doc;
3. parser.GetNextDocument(doc);
버전 5.0 이후 GetNextDocument 함수가 없습니다.사용하다
1. YAML::Node doc = YAML::Load(fin);
3.테스트 코드:
1.CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test_yaml)
find_package(Boost REQUIRED COMPONENTS system)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
find_package(PkgConfig)
pkg_check_modules(NEW_YAMLCPP yaml-cpp>=0.5)
if(NEW_YAMLCPP_FOUND)
add_definitions(-DHAVE_NEW_YAMLCPP)
endif(NEW_YAMLCPP_FOUND)
link_directories(
/usr/lib/
)
include_directories(
include
yaml-cpp
)
add_executable(test ./src/main.cpp)
target_link_libraries(test ${catkin_LIBRARIES} yaml-cpp)
//main.cpp
#include
#include
#include
#include "yaml-cpp/yaml.h"
using namespace std;
// yaml-cpp 0.5 ">>",
// , ">>"
template
void operator >> (const YAML::Node& node, T& i)
{
i = node.as();
}
void configure(const YAML::Node& node);
void nodePrint(const YAML::Node& node);
int main()
{
YAML::Node config = YAML::LoadFile("../src/test.yaml");
configure(config["subscribers"]);
return 0;
}
void configure(const YAML::Node& node)
{
for (unsigned int i = 0; i < node.size(); i++)
{
nodePrint(node[i]);
}
}
void nodePrint(const YAML::Node& node)
{
string name;
string topic;
double timeout;
unsigned int priority;
node["name"] >> name;
node["topic"] >> topic;
node["timeout"] >> timeout;
node["priority"] >> priority;
cout<
3.test.yaml
# yaml
subscribers:
- name: "Default task"
topic: "input/cmd_default_check"
timeout: 0.5
priority: 1
short_desc: "Default controller"
- name: "Navigation stack"
topic: "input/cmd_serial_navi"
timeout: 1.0
priority: 3
short_desc: "Navigation controller"
publisher: "output/cmd_vel"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.