| Avro C++ README.txt |
| |
| The C++ port is thus far incomplete. Currently, it contains: |
| |
| - Serializer/Parser- objects for writing/reading raw binary. |
| |
| - xxxSchema- objects for composing schemas. |
| |
| - ValidSchema- a schema object that has been converted to a parse tree |
| (with some sanity checks). |
| |
| - ValidSchema.toJson() writes the schema as a json object. |
| |
| - ValidatingSerializer/ValidatingParser- check that reads/writes |
| match the expected schema type (more expensive than the raw |
| serializer/parser but they detect errors, and allow dynamic |
| discovery of parsed data/attributes). |
| |
| - Compiler (compileJsonSchema())- converts a Json string schema to a |
| ValidSchema. |
| |
| - Code Generation (experimental) - given a schema it generates C++ |
| objects of the same data types, and the code to serialize and parse |
| it. |
| |
| What's missing: Rpc containers are not yet implemented. Documentation is sparse. |
| |
| INSTRUCTIONS |
| |
| Pre-requisites: |
| |
| To compile requires boost headers. Optionally, it requires Snappy compression library. If Snappy is available, it builds support for Snappy compression and skips it otherwise. (Please see your OS-specific instructions on how to install Boost and Snappy for your OS). |
| |
| To build one requires cmake 3.5 or later and a compiler supporting C++17 or later. |
| |
| To generate a Makefile under Unix, MacOS (using GNU) or Cygwin use: |
| |
| mkdir build |
| cd build |
| cmake -G "Unix Makefiles" .. |
| |
| If it doesn't work, either you are missing boost package or you need to help |
| configure locate it. |
| |
| If the Makefile is configured correctly, then you can make and run tests: |
| |
| make |
| ctest |
| |
| To install |
| |
| make package |
| |
| and then untar the generated .tar.gz file. |
| |
| To build and test on MacOS (using Xcode) |
| |
| mkdir build.mac |
| cd build.mac |
| cmake -G Xcode |
| |
| xcodebuild -configuration Release |
| ctest -C Release |
| |
| If debug version is required, replace 'Release' above with 'Debug'. |
| |
| Note: The LICENSE and NOTICE files in the lang/c++ source directory are used to |
| build the binary distribution. The LICENSE and NOTICE information for the Avro |
| C++ source distribution is in the root directory. |