You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
4.2 KiB

2 months ago
  1. # yaml-cpp ![Build Status](https://github.com/jbeder/yaml-cpp/actions/workflows/build.yml/badge.svg) [![Documentation](https://codedocs.xyz/jbeder/yaml-cpp.svg)](https://codedocs.xyz/jbeder/yaml-cpp/)
  2. `yaml-cpp` is a [YAML](http://www.yaml.org/) parser and emitter in C++ matching the [YAML 1.2 spec](http://www.yaml.org/spec/1.2/spec.html).
  3. ## Usage
  4. See [Tutorial](https://github.com/jbeder/yaml-cpp/wiki/Tutorial) and [How to Emit YAML](https://github.com/jbeder/yaml-cpp/wiki/How-To-Emit-YAML) for reference. For the old API (until 0.5.0), see [How To Parse A Document](https://github.com/jbeder/yaml-cpp/wiki/How-To-Parse-A-Document-(Old-API)).
  5. ## Any Problems?
  6. If you find a bug, post an [issue](https://github.com/jbeder/yaml-cpp/issues)! If you have questions about how to use yaml-cpp, please post it on http://stackoverflow.com and tag it [`yaml-cpp`](http://stackoverflow.com/questions/tagged/yaml-cpp).
  7. ## How to Build
  8. `yaml-cpp` uses [CMake](http://www.cmake.org) to support cross-platform building. Install [CMake](http://www.cmake.org) _(Resources -> Download)_ before proceeding. The basic steps to build are:
  9. **Note:** If you don't use the provided installer for your platform, make sure that you add `CMake`'s bin folder to your path.
  10. #### 1. Navigate into the source directory, create build folder and run `CMake`:
  11. ```sh
  12. mkdir build
  13. cd build
  14. cmake [-G generator] [-DYAML_BUILD_SHARED_LIBS=on|OFF] ..
  15. ```
  16. * The `generator` option is the build system you'd like to use. Run `cmake` without arguments to see a full list of available generators.
  17. * On Windows, you might use "Visual Studio 12 2013" (VS 2013 32-bits), or "Visual Studio 14 2015 Win64" (VS 2015 64-bits).
  18. * On OS X, you might use "Xcode".
  19. * On a UNIX-like system, omit the option (for a Makefile).
  20. * `yaml-cpp` builds a static library by default, you may want to build a shared library by specifying `-DYAML_BUILD_SHARED_LIBS=ON`.
  21. * [Debug mode of the GNU standard C++
  22. library](https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html)
  23. can be used when both `yaml-cpp` and client code is compiled with the
  24. `_GLIBCXX_DEBUG` flag (e.g. by calling CMake with `-D
  25. CMAKE_CXX_FLAGS_DEBUG='-g -D_GLIBCXX_DEBUG'` option).
  26. Note that for `yaml-cpp` unit tests to run successfully, the _GoogleTest_
  27. library also must be built with this flag, i.e. the system one cannot be
  28. used (the _YAML_USE_SYSTEM_GTEST_ CMake option must be _OFF_, which is the
  29. default).
  30. * For more options on customizing the build, see the [CMakeLists.txt](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt) file.
  31. #### 2. Build it!
  32. * The command you'll need to run depends on the generator you chose earlier.
  33. **Note:** To clean up, just remove the `build` directory.
  34. ## How to Integrate it within your project using CMake
  35. You can use for example FetchContent :
  36. ```cmake
  37. include(FetchContent)
  38. FetchContent_Declare(
  39. yaml-cpp
  40. GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
  41. GIT_TAG <tag_name> # Can be a tag (yaml-cpp-x.x.x), a commit hash, or a branch name (master)
  42. )
  43. FetchContent_GetProperties(yaml-cpp)
  44. if(NOT yaml-cpp_POPULATED)
  45. message(STATUS "Fetching yaml-cpp...")
  46. FetchContent_Populate(yaml-cpp)
  47. add_subdirectory(${yaml-cpp_SOURCE_DIR} ${yaml-cpp_BINARY_DIR})
  48. endif()
  49. target_link_libraries(YOUR_LIBRARY PUBLIC yaml-cpp::yaml-cpp) # The library or executable that require yaml-cpp library
  50. ```
  51. ## Recent Releases
  52. [yaml-cpp 0.6.0](https://github.com/jbeder/yaml-cpp/releases/tag/yaml-cpp-0.6.0) released! This release requires C++11, and no longer depends on Boost.
  53. [yaml-cpp 0.3.0](https://github.com/jbeder/yaml-cpp/releases/tag/release-0.3.0) is still available if you want the old API.
  54. **The old API will continue to be supported, and will still receive bugfixes!** The 0.3.x and 0.4.x versions will be old API releases, and 0.5.x and above will all be new API releases.
  55. # API Documentation
  56. The autogenerated API reference is hosted on [CodeDocs](https://codedocs.xyz/jbeder/yaml-cpp/index.html)
  57. # Third Party Integrations
  58. The following projects are not officially supported:
  59. - [Qt wrapper](https://gist.github.com/brcha/d392b2fe5f1e427cc8a6)
  60. - [UnrealEngine Wrapper](https://github.com/jwindgassen/UnrealYAML)