jbeder/yaml-cpp
GitHub: jbeder/yaml-cpp
一个符合 YAML 1.2 规范的 C++ YAML 解析器和发射器库,用于在 C++ 项目中高效读写 YAML 数据。
Stars: 5890 | Forks: 2101
# yaml-cpp  [](https://codedocs.xyz/jbeder/yaml-cpp/)
`yaml-cpp` 是一个符合 [YAML 1.2 规范](http://www.yaml.org/spec/1.2/spec.html) 的 C++ [YAML](http://www.yaml.org/) 解析器和发射器。
## 用法
请参阅[教程](https://github.com/jbeder/yaml-cpp/wiki/Tutorial)和[如何生成 YAML](https://github.com/jbeder/yaml-cpp/wiki/How-To-Emit-YAML)。有关旧 API(0.5.0 之前版本)的信息,请参阅[如何解析文档](https://github.com/jbeder/yaml-cpp/wiki/How-To-Parse-A-Document-(Old-API))。
## 有任何问题?
如果你发现了 Bug,请提交一个 [issue](https://github.com/jbeder/yaml-cpp/issues)!如果你有关于如何使用 yaml-cpp 的问题,请在 http://stackoverflow.com 上发帖并打上 [`yaml-cpp`](http://stackoverflow.com/questions/tagged/yaml-cpp) 标签。
## 如何构建
`yaml-cpp` 使用 [CMake](http://www.cmake.org) 来支持跨平台构建。请在继续操作之前安装 [CMake](http://www.cmake.org) _(资源 -> 下载)_。基本的构建步骤如下:
**注意:** 如果你没有使用为你平台提供的安装程序,请确保将 `CMake` 的 bin 文件夹添加到你的路径中。
#### 1. 进入源代码目录,创建构建文件夹并运行 `CMake`:
```
mkdir build
cd build
cmake [-G generator] [-DYAML_BUILD_SHARED_LIBS=on|OFF] ..
```
* `generator` 选项是你想要使用的构建系统。不带参数运行 `cmake` 可以查看可用生成器的完整列表。
* 在 Windows 上,你可以使用 "Visual Studio 12 2013" (VS 2013 32位) 或 "Visual Studio 14 2015 Win64" (VS 2015 64位)。
* 在 OS X 上,你可以使用 "Xcode"。
* 在类 UNIX 系统上,省略此选项(用于生成 Makefile)。
* `yaml-cpp` 默认构建静态库,你可以通过指定 `-DYAML_BUILD_SHARED_LIBS=ON` 来构建动态库。
* 当 `yaml-cpp` 和客户端代码都使用
`_GLIBCXX_DEBUG` 标志编译时(例如通过使用 `-D
CMAKE_CXX_FLAGS_DEBUG='-g -D_GLIBCXX_DEBUG'` 选项调用 CMake),可以使用
[GNU 标准 C++ 库的 Debug 模式](https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html)。
请注意,为了使 `yaml-cpp` 单元测试成功运行,_GoogleTest_ 库也必须使用此标志构建,即不能使用系统自带的库(_YAML_USE_SYSTEM_GTEST_ CMake 选项必须为 _OFF_,这也是默认值)。
* 有关自定义构建的更多选项,请参见 [CMakeLists.txt](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt) 文件。
#### 2. 构建它!
* 你需要运行的命令取决于你之前选择的生成器。
**注意:** 要进行清理,只需删除 `build` 目录即可。
## 如何使用 CMake 将其集成到你的项目中
你可以使用 FetchContent 作为示例:
```
include(FetchContent)
FetchContent_Declare(
yaml-cpp
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
GIT_TAG # Can be a tag (yaml-cpp-x.x.x), a commit hash, or a branch name (master)
)
FetchContent_MakeAvailable(yaml-cpp)
target_link_libraries(YOUR_LIBRARY PUBLIC yaml-cpp::yaml-cpp) # The library or executable that require yaml-cpp library
```
## 最新版本
[yaml-cpp 0.9.0](https://github.com/jbeder/yaml-cpp/releases/tag/yaml-cpp-0.9.0) 已发布!
如果你想要旧 API,[yaml-cpp 0.3.0](https://github.com/jbeder/yaml-cpp/releases/tag/release-0.3.0) 依然可用。
**旧 API 将在 2026 年停止接收错误修复。** 0.3.x 版本提供旧 API,而 0.5.x 及更高版本均提供新 API。
# API 文档
自动生成的 API 参考文档托管在 [CodeDocs](https://codedocs.xyz/jbeder/yaml-cpp/index.html)
# 第三方集成
以下项目非官方支持:
- [Qt 封装](https://gist.github.com/brcha/d392b2fe5f1e427cc8a6)
- [UnrealEngine 封装](https://github.com/jwindgassen/UnrealYAML)
标签:Bash脚本, C++, CMake, YAML, YAML 1.2规范, 动态库, 反序列化, 后端开发, 安全库, 序列化, 开发库, 开源库, 搜索引擎爬虫, 数据擦除, 数据格式转换, 文本解析, 游戏开发配置, 生成器, 解析器, 软件开发, 配置文件解析, 静态库