Home | History | Annotate | Download | only in source
      1 Using the schema compiler    {#flatbuffers_guide_using_schema_compiler}
      2 =========================
      3 
      4 Usage:
      5 
      6     flatc [ GENERATOR OPTIONS ] [ -o PATH ] [ -I PATH ] [ -S ] FILES...
      7           [ -- FILES...]
      8 
      9 The files are read and parsed in order, and can contain either schemas
     10 or data (see below). Data files are processed according to the definitions of
     11 the most recent schema specified.
     12 
     13 `--` indicates that the following files are binary files in
     14 FlatBuffer format conforming to the schema indicated before it.
     15 
     16 Depending on the flags passed, additional files may
     17 be generated for each file processed:
     18 
     19 For any schema input files, one or more generators can be specified:
     20 
     21 -   `--cpp`, `-c` : Generate a C++ header for all definitions in this file (as
     22     `filename_generated.h`).
     23 
     24 -   `--java`, `-j` : Generate Java code.
     25 
     26 -   `--csharp`, `-n` : Generate C# code.
     27 
     28 -   `--go`, `-g` : Generate Go code.
     29 
     30 -   `--python`, `-p`: Generate Python code.
     31 
     32 -   `--js`, `-s`: Generate JavaScript code.
     33 
     34 -   `--php`: Generate PHP code.
     35 
     36 -   `--grpc`: Generate RPC stub code for GRPC.
     37 
     38 For any data input files:
     39 
     40 -   `--binary`, `-b` : If data is contained in this file, generate a
     41     `filename.bin` containing the binary flatbuffer (or a different extension
     42     if one is specified in the schema).
     43 
     44 -   `--json`, `-t` : If data is contained in this file, generate a
     45     `filename.json` representing the data in the flatbuffer.
     46 
     47 Additional options:
     48 
     49 -   `-o PATH` : Output all generated files to PATH (either absolute, or
     50     relative to the current directory). If omitted, PATH will be the
     51     current directory. PATH should end in your systems path separator,
     52     e.g. `/` or `\`.
     53 
     54 -   `-I PATH` : when encountering `include` statements, attempt to load the
     55     files from this path. Paths will be tried in the order given, and if all
     56     fail (or none are specified) it will try to load relative to the path of
     57     the schema file being parsed.
     58 
     59 -   `-M` : Print make rules for generated files.
     60 
     61 -   `--strict-json` : Require & generate strict JSON (field names are enclosed
     62     in quotes, no trailing commas in tables/vectors). By default, no quotes are
     63     required/generated, and trailing commas are allowed.
     64 
     65 -   `--defaults-json` : Output fields whose value is equal to the default value
     66     when writing JSON text.
     67 
     68 -   `--no-prefix` : Don't prefix enum values in generated C++ by their enum
     69     type.
     70 
     71 -   `--scoped-enums` : Use C++11 style scoped and strongly typed enums in
     72     generated C++. This also implies `--no-prefix`.
     73 
     74 -   `--gen-includes` : (deprecated), this is the default behavior.
     75                        If the original behavior is required (no include
     76 	                   statements) use `--no-includes.`
     77 
     78 -   `--no-includes` : Don't generate include statements for included schemas the
     79     generated file depends on (C++).
     80 
     81 -   `--gen-mutable` : Generate additional non-const accessors for mutating
     82     FlatBuffers in-place.
     83 
     84     `--gen-object-api` : Generate an additional object-based API. This API is
     85     more convenient for object construction and mutation than the base API,
     86     at the cost of efficiency (object allocation). Recommended only to be used
     87     if other options are insufficient.
     88 
     89 -   `--gen-onefile` :  Generate single output file (useful for C#)
     90 
     91 -   `--gen-all`: Generate not just code for the current schema files, but
     92     for all files it includes as well. If the language uses a single file for
     93     output (by default the case for C++ and JS), all code will end up in
     94     this one file.
     95 
     96 -   `--no-js-exports` :  Removes Node.js style export lines (useful for JS)
     97 
     98 -   `--goog-js-export` :  Uses goog.exportsSymbol and goog.exportsProperty
     99     instead of Node.js style exporting.  Needed for compatibility with the
    100     Google closure compiler (useful for JS).
    101 
    102 -   `--raw-binary` : Allow binaries without a file_indentifier to be read.
    103     This may crash flatc given a mismatched schema.
    104 
    105 -   `--proto`: Expect input files to be .proto files (protocol buffers).
    106     Output the corresponding .fbs file.
    107     Currently supports: `package`, `message`, `enum`, nested declarations,
    108     `import` (use `-I` for paths), `extend`, `oneof`, `group`.
    109     Does not support, but will skip without error: `option`, `service`,
    110     `extensions`, and most everything else.
    111 
    112 -   `--schema`: Serialize schemas instead of JSON (use with -b). This will
    113     output a binary version of the specified schema that itself corresponds
    114     to the reflection/reflection.fbs schema. Loading this binary file is the
    115     basis for reflection functionality.
    116 
    117 -   `--bfbs-comments`: Add doc comments to the binary schema files.
    118 
    119 -   `--conform FILE` : Specify a schema the following schemas should be
    120     an evolution of. Gives errors if not. Useful to check if schema
    121     modifications don't break schema evolution rules.
    122 
    123 -   `--include-prefix PATH` : Prefix this path to any generated include
    124     statements.
    125 
    126 -   `--keep-prefix` : Keep original prefix of schema include statement.
    127 
    128 -   `--reflect-types` : Add minimal type reflection to code generation.
    129 -   `--reflect-names` : Add minimal type/name reflection.
    130 
    131 NOTE: short-form options for generators are deprecated, use the long form
    132 whenever possible.
    133