123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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.
|