Using the schema compiler

Usage:

flatc [ GENERATOR OPTIONS ] [ -o PATH ] [ -I PATH ] [ -S ] FILES...
      [ -- FILES...]

The files are read and parsed in order, and can contain either schemas or data (see below). Later files can make use of definitions in earlier files.

-- indicates that the following files are binary files in FlatBuffer format conforming to the schema(s) indicated before it. Incompatible binary files currently will give unpredictable results (!)

Depending on the flags passed, additional files may be generated for each file processed:

For any schema input files, one or more generators can be specified:

  • --cpp, -c : Generate a C++ header for all definitions in this file (as filename_generated.h).

  • --java, -j : Generate Java code.

  • --csharp, -n : Generate C# code.

  • --go, -g : Generate Go code.

  • --python, -p: Generate Python code.

  • --javascript, -s: Generate JavaScript code.

  • --php: Generate PHP code.

For any data input files:

  • --binary, -b : If data is contained in this file, generate a filename.bin containing the binary flatbuffer (or a different extension if one is specified in the schema).

  • --json, -t : If data is contained in this file, generate a filename.json representing the data in the flatbuffer.

Additional options:

  • -o PATH : Output all generated files to PATH (either absolute, or relative to the current directory). If omitted, PATH will be the current directory. PATH should end in your systems path separator, e.g. / or \.

  • -I PATH : when encountering include statements, attempt to load the files from this path. Paths will be tried in the order given, and if all fail (or none are specified) it will try to load relative to the path of the schema file being parsed.

  • -M : Print make rules for generated files.

  • --strict-json : Require & generate strict JSON (field names are enclosed in quotes, no trailing commas in tables/vectors). By default, no quotes are required/generated, and trailing commas are allowed.

  • --defaults-json : Output fields whose value is equal to the default value when writing JSON text.

  • --no-prefix : Don't prefix enum values in generated C++ by their enum type.

  • --scoped-enums : Use C++11 style scoped and strongly typed enums in generated C++. This also implies --no-prefix.

  • --gen-includes : (deprecated), this is the default behavior. If the original behavior is required (no include statements) use --no-includes.

  • --no-includes : Don't generate include statements for included schemas the generated file depends on (C++).

  • --gen-mutable : Generate additional non-const accessors for mutating FlatBuffers in-place.

  • --gen-onefile : Generate single output file (useful for C#)

  • --raw-binary : Allow binaries without a file_indentifier to be read. This may crash flatc given a mismatched schema.

  • --proto: Expect input files to be .proto files (protocol buffers). Output the corresponding .fbs file. Currently supports: package, message, enum, nested declarations, import (use -I for paths), extend, oneof, group. Does not support, but will skip without error: option, service, extensions, and most everything else.

  • --schema: Serialize schemas instead of JSON (use with -b). This will output a binary version of the specified schema that itself corresponds to the reflection/reflection.fbs schema. Loading this binary file is the basis for reflection functionality.

NOTE: short-form options for generators are deprecated, use the long form whenever possible.