jbeder/yaml-cpp

GitHub: jbeder/yaml-cpp

一个符合 YAML 1.2 规范的 C++ YAML 解析器和发射器库,用于在 C++ 项目中高效读写 YAML 数据。

Stars: 5890 | Forks: 2101

# yaml-cpp ![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b51e3d340b093807.svg) [![文档](https://codedocs.xyz/jbeder/yaml-cpp.svg)](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规范, 动态库, 反序列化, 后端开发, 安全库, 序列化, 开发库, 开源库, 搜索引擎爬虫, 数据擦除, 数据格式转换, 文本解析, 游戏开发配置, 生成器, 解析器, 软件开发, 配置文件解析, 静态库