Skip to content
Christopher Dunn edited this page Aug 27, 2017 · 7 revisions

One approach to integrating JsonCpp in your project is to include the amalgamated source (a single .cpp file and two .h files) in your project, and compile and build as you would any other source file. This ensures consistency of compilation flags and ABI compatibility, issues which arise when building shared or static libraries. See the next section for instructions.

The include/ should be added to your compiler include path. JsonCpp headers should be included as follow:

#include <json/json.h>

If JsonCpp was built as a dynamic library on Windows, then your project needs to define the macro JSON_DLL.

Generating amalgamated source and header

JsonCpp is provided with a script to generate a single header and a single source file to ease inclusion into an existing project. The amalgamated source can be generated at any time by running the following command from the top-directory (this requires Python 2.6):

python amalgamate.py

It is possible to specify header name. See the -h option for detail.

By default, the following files are generated:

  • dist/jsoncpp.cpp: source file that needs to be added to your project.
  • dist/json/json.h: corresponding header file for use in your project. It is equivalent to including json/json.h in non-amalgamated source. This header only depends on standard headers.
  • dist/json/json-forwards.h: header that provides forward declaration of all JsonCpp types.

The amalgamated sources are generated by concatenating JsonCpp source in the correct order and defining the macro JSON_IS_AMALGAMATION to prevent inclusion of other headers.

Clone this wiki locally