Go to file
rf.wu a58462d175 CMake: Add Android dynamic library cross compile support.
CMake: Fix shared library compile configure error.
2019-10-14 09:42:19 +08:00
include/yaml-cpp Modernize: Use range-based for loops for readability (#762) 2019-10-05 14:20:17 -05:00
src Modernize: Use range-based for loops for readability (#762) 2019-10-05 14:20:17 -05:00
test Fix CMake 3.10 and below compatibility (#763) 2019-10-04 14:46:18 -05:00
util Refactor CMake to use more modern paradigms (#741) 2019-09-27 09:59:53 -05:00
.clang-format Update .clang-format to use C++ 11 style. 2016-04-01 20:06:28 -05:00
.codedocs test: Upgrade googlemock 1.7.0 to googletest 1.8.0 2017-08-24 22:49:17 -05:00
.gitignore Add bazel Support (#724) 2019-09-27 10:11:38 -05:00
.travis.yml Refactor CMake to use more modern paradigms (#741) 2019-09-27 09:59:53 -05:00
BUILD.bazel Add bazel Support (#724) 2019-09-27 10:11:38 -05:00
CMakeLists.txt CMake: Add Android dynamic library cross compile support. 2019-10-14 09:42:19 +08:00
CONTRIBUTING.md Update CONTRIBUTING.md 2016-03-28 23:47:21 -05:00
install.txt Added newline to install and license files 2009-12-21 20:35:27 +00:00
LICENSE Rename license file and update copyright date. 2015-03-30 20:32:46 -05:00
README.md CMake: Add Android dynamic library cross compile support. 2019-10-14 09:42:19 +08:00
WORKSPACE Add bazel Support (#724) 2019-09-27 10:11:38 -05:00
yaml-cpp-config.cmake.in Add yaml-cpp-config.cmake and yaml-cpp-config-version.cmake files for importing yaml-cpp into external projects (through find_package). 2015-01-24 11:21:26 -06:00
yaml-cpp.pc.in Refactor CMake to use more modern paradigms (#741) 2019-09-27 09:59:53 -05:00

yaml-cpp Build Status Documentation

yaml-cpp is a YAML parser and emitter in C++ matching the YAML 1.2 spec.

To get a feel for how it can be used, see the Tutorial or How to Emit YAML. For the old API (version < 0.5.0), see How To Parse A Document.

Problems?

If you find a bug, post an issue! If you have questions about how to use yaml-cpp, please post it on http://stackoverflow.com and tag it yaml-cpp.

How to Build

yaml-cpp uses CMake to support cross-platform building. The basic steps to build are:

  1. Download and install CMake (Resources -> Download).

Note: If you don't use the provided installer for your platform, make sure that you add CMake's bin folder to your path.

  1. Navigate into the source directory, and type:
mkdir build
cd build
  1. Run CMake. The basic syntax is:
cmake [-G generator] [-DBUILD_SHARED_LIBS=ON|OFF] ..
  • The generator is whatever type of build system you'd like to use. To see a full list of generators on your platform, just run cmake (with no arguments). For example:
    • On Windows, you might use "Visual Studio 12 2013" to generate a Visual Studio 2013 solution or "Visual Studio 14 2015 Win64" to generate a 64-bit Visual Studio 2015 solution.
    • On OS X, you might use "Xcode" to generate an Xcode project
    • On a UNIX-y system, simply omit the option to generate a makefile
  • yaml-cpp defaults to building a static library, but you may build a shared library by specifying -DYAML_BUILD_SHARED_LIBS=ON.
  • For more options on customizing the build, see the CMakeLists.txt file.
  1. Build it!

  2. To clean up, just remove the build directory.

Cross Compile Dynamic Library for Android

  • The 3rd step above can do like this:

    cmake -DCMAKE_TOOLCHAIN_FILE=${NDKROOT}/build/cmake/android.toolchain.cmake -DANDROID_STL=c++_shared -DANDROID_PLATFORM=android-26 -DANDROID_ABI=x86_64 -DBUILD_ANDROID_LIBS=ON ..
    
    • To do cross-compiling, ndk-bundleOR android-sdk is needed. Also NDKROOT should be exported in your bash config file, just like:

      export NDKROOT=~/Library/Android/sdk/ndk-bundle
      
    • The arguments ANDROID_ABI can be set to arm64-v8a, armeabi-v7a, armeabi, x86, x86_64 etc. If NOT set, the default value is armeabi-v7a.

  • The arguments ANDROID_PLATFORM can be set to android-xx OR latest, xx can be replaced to the android api number, the default value will be the minimum supported version of your ndk-bundle, while the value latest will using the maximum supported version.

    • BUILD_ANDROID_LIBS=ON will default set BUILD_SHARED_LIBS=ON, and copy the libc++_shared.so to build directory from ndk-bundle, which maybe needed by libyaml-cpp.so.

Recent Release

yaml-cpp 0.6.0 has been released! This release requires C++11, and no longer depends on Boost.

yaml-cpp 0.3.0 is still available if you want the old API.

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.