2021-11-22 22:44:31 -06:00
# yaml-cpp  [](https://codedocs.xyz/jbeder/yaml-cpp/)
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
`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 ).
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
## Usage
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
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 )).
## Any Problems?
2015-03-30 20:31:59 -05:00
2017-03-07 21:17:51 +01:00
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 ).
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
## How to Build
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
`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:
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
**Note:** If you don't use the provided installer for your platform, make sure that you add `CMake` 's bin folder to your path.
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
#### 1. Navigate into the source directory, create build folder and run `CMake`:
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
```sh
2015-03-30 20:31:59 -05:00
mkdir build
cd build
2021-12-10 08:54:35 -06:00
cmake [ -G generator] [ -DYAML_BUILD_SHARED_LIBS= on| OFF] ..
2015-03-30 20:31:59 -05:00
```
2021-10-10 00:02:35 -03:00
* The `generator` option is the build system you'd like to use. Run `cmake` without arguments to see a full list of available generators.
* On Windows, you might use "Visual Studio 12 2013" (VS 2013 32-bits), or "Visual Studio 14 2015 Win64" (VS 2015 64-bits).
* On OS X, you might use "Xcode".
* On a UNIX-like system, omit the option (for a Makefile).
2015-03-30 20:31:59 -05:00
2021-12-10 08:54:35 -06:00
* `yaml-cpp` builds a static library by default, you may want to build a shared library by specifying `-DYAML_BUILD_SHARED_LIBS=ON` .
2015-03-30 20:31:59 -05:00
2023-11-27 18:57:10 +01:00
* [Debug mode of the GNU standard C++
library](https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html)
can be used when both `yaml-cpp` and client code is compiled with the
`_GLIBCXX_DEBUG` flag (e.g. by calling CMake with `-D
CMAKE_CXX_FLAGS_DEBUG='-g -D_GLIBCXX_DEBUG'` option).
Note that for `yaml-cpp` unit tests to run successfully, the _GoogleTest_
library also must be built with this flag, i.e. the system one cannot be
used (the _YAML_USE_SYSTEM_GTEST_ CMake option must be _OFF_ , which is the
default).
2015-03-30 20:31:59 -05:00
* For more options on customizing the build, see the [CMakeLists.txt ](https://github.com/jbeder/yaml-cpp/blob/master/CMakeLists.txt ) file.
2021-10-10 00:02:35 -03:00
#### 2. Build it!
* The command you'll need to run depends on the generator you chose earlier.
2015-03-30 20:31:59 -05:00
2021-10-10 00:02:35 -03:00
**Note:** To clean up, just remove the `build` directory.
2015-03-30 20:31:59 -05:00
2022-10-13 22:12:19 +02:00
## How to Integrate it within your project using CMake
You can use for example FetchContent :
```cmake
include ( FetchContent )
2024-01-04 12:03:33 +01:00
FetchContent_Declare (
yaml-cpp
2022-10-13 22:12:19 +02:00
GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
2024-01-04 12:03:33 +01:00
GIT_TAG <tag_name> # Can be a tag (yaml-cpp-x.x.x), a commit hash, or a branch name (master)
)
2024-08-21 09:46:53 +02:00
FetchContent_MakeAvailable ( yaml-cpp )
2022-10-13 22:12:19 +02:00
target_link_libraries ( YOUR_LIBRARY PUBLIC yaml-cpp::yaml-cpp ) # The library or executable that require yaml-cpp library
```
2021-10-10 00:02:35 -03:00
## Recent Releases
2015-03-30 20:31:59 -05:00
2025-03-13 20:35:32 +01:00
[yaml-cpp 0.8.0 ](https://github.com/jbeder/yaml-cpp/releases/tag/0.8.0 ) released!
2015-03-30 20:31:59 -05:00
2015-05-26 18:24:22 +02:00
[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.
2015-03-30 20:31:59 -05:00
2024-12-18 11:43:01 -06:00
**The old API will stop receiving bugfixes in 2026.** The 0.3.x versions provide the old API, and 0.5.x and above all provide the new API.
2019-10-11 15:12:48 +02:00
# API Documentation
The autogenerated API reference is hosted on [CodeDocs ](https://codedocs.xyz/jbeder/yaml-cpp/index.html )
2020-04-26 23:53:02 +02:00
# Third Party Integrations
The following projects are not officially supported:
- [Qt wrapper ](https://gist.github.com/brcha/d392b2fe5f1e427cc8a6 )
2021-08-30 13:11:08 +02:00
- [UnrealEngine Wrapper ](https://github.com/jwindgassen/UnrealYAML )