...

Text file src/github.com/google/flatbuffers/docs/source/Compiler.md

Documentation: github.com/google/flatbuffers/docs/source

     1Using the schema compiler    {#flatbuffers_guide_using_schema_compiler}
     2=========================
     3
     4Usage:
     5
     6    flatc [ GENERATOR OPTIONS ] [ -o PATH ] [ -I PATH ] FILES...
     7          [ -- FILES...]
     8
     9The files are read and parsed in order, and can contain either schemas
    10or data (see below). Data files are processed according to the definitions of
    11the most recent schema specified.
    12
    13`--` indicates that the following files are binary files in
    14FlatBuffer format conforming to the schema indicated before it.
    15
    16Depending on the flags passed, additional files may
    17be generated for each file processed:
    18
    19For 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-   `--kotlin`, `-k` : Generate Kotlin code.
    27
    28-   `--csharp`, `-n` : Generate C# code.
    29
    30-   `--go`, `-g` : Generate Go code.
    31
    32-   `--python`, `-p`: Generate Python code.
    33
    34-   `--js`, `-s`: Generate JavaScript code.
    35
    36-   `--ts`: Generate TypeScript code.
    37
    38-   `--php`: Generate PHP code.
    39
    40-   `--grpc`: Generate RPC stub code for GRPC.
    41
    42-   `--dart`: Generate Dart code.
    43
    44-   `--lua`: Generate Lua code.
    45
    46-   `--lobster`: Generate Lobster code.
    47
    48-   `--rust`, `-r` : Generate Rust code.
    49
    50-   `--swift`: Generate Swift code.
    51
    52For any data input files:
    53
    54-   `--binary`, `-b` : If data is contained in this file, generate a
    55    `filename.bin` containing the binary flatbuffer (or a different extension
    56    if one is specified in the schema).
    57
    58-   `--json`, `-t` : If data is contained in this file, generate a
    59    `filename.json` representing the data in the flatbuffer.
    60
    61Additional options:
    62
    63-   `-o PATH` : Output all generated files to PATH (either absolute, or
    64    relative to the current directory). If omitted, PATH will be the
    65    current directory. PATH should end in your systems path separator,
    66    e.g. `/` or `\`.
    67
    68-   `-I PATH` : when encountering `include` statements, attempt to load the
    69    files from this path. Paths will be tried in the order given, and if all
    70    fail (or none are specified) it will try to load relative to the path of
    71    the schema file being parsed.
    72
    73-   `-M` : Print make rules for generated files.
    74
    75-   `--strict-json` : Require & generate strict JSON (field names are enclosed
    76    in quotes, no trailing commas in tables/vectors). By default, no quotes are
    77    required/generated, and trailing commas are allowed.
    78
    79-   `--allow-non-utf8` : Pass non-UTF-8 input through parser and emit nonstandard
    80    \x escapes in JSON. (Default is to raise parse error on non-UTF-8 input.)
    81
    82-   `--natural-utf8` : Output strings with UTF-8 as human-readable strings.
    83     By default, UTF-8 characters are printed as \uXXXX escapes."
    84
    85-   `--defaults-json` : Output fields whose value is equal to the default value
    86    when writing JSON text.
    87
    88-   `--no-prefix` : Don't prefix enum values in generated C++ by their enum
    89    type.
    90
    91-   `--scoped-enums` : Use C++11 style scoped and strongly typed enums in
    92    generated C++. This also implies `--no-prefix`.
    93    
    94-   `--no-emit-min-max-enum-values` : Disable generation of MIN and MAX
    95    enumerated values for scoped enums and prefixed enums.
    96    
    97-   `--gen-includes` : (deprecated), this is the default behavior.
    98                       If the original behavior is required (no include
    99	                   statements) use `--no-includes.`
   100
   101-   `--no-includes` : Don't generate include statements for included schemas the
   102    generated file depends on (C++ / Python).
   103
   104-   `--gen-mutable` : Generate additional non-const accessors for mutating
   105    FlatBuffers in-place.
   106
   107-   `--gen-onefile` : Generate single output file for C#, Go, and Python.
   108
   109-   `--gen-name-strings` : Generate type name functions for C++.
   110
   111-   `--gen-object-api` : Generate an additional object-based API. This API is
   112    more convenient for object construction and mutation than the base API,
   113    at the cost of efficiency (object allocation). Recommended only to be used
   114    if other options are insufficient.
   115
   116-   `--gen-compare`  :  Generate operator== for object-based API types.
   117
   118-   `--gen-nullable` : Add Clang _Nullable for C++ pointer. or @Nullable for Java.
   119
   120-   `--gen-generated` : Add @Generated annotation for Java.
   121
   122-   `--gen-jvmstatic` : Add @JvmStatic annotation for Kotlin methods
   123    in companion object for interop from Java to Kotlin.
   124
   125-   `--gen-all` : Generate not just code for the current schema files, but
   126    for all files it includes as well. If the language uses a single file for
   127    output (by default the case for C++ and JS), all code will end up in
   128    this one file.
   129
   130-   `--cpp-include` : Adds an #include in generated file
   131
   132-   `--cpp-ptr-type T` : Set object API pointer type (default std::unique_ptr)
   133
   134-   `--cpp-str-type T` : Set object API string type (default std::string)
   135    T::c_str(), T::length() and T::empty() must be supported.
   136    The custom type also needs to be constructible from std::string (see the
   137	--cpp-str-flex-ctor option to change this behavior).
   138
   139-   `--cpp-str-flex-ctor` : Don't construct custom string types by passing
   140    std::string from Flatbuffers, but (char* + length). This allows efficient
   141	construction of custom string types, including zero-copy construction.
   142
   143-   `--no-cpp-direct-copy` : Don't generate direct copy methods for C++
   144    object-based API.
   145
   146-   `--cpp-std CPP_STD` : Generate a C++ code using features of selected C++ standard.
   147     Supported `CPP_STD` values:
   148    * `c++0x` - generate code compatible with old compilers (VS2010),
   149    * `c++11` - use C++11 code generator (default),
   150    * `c++17` - use C++17 features in generated code (experimental).
   151
   152-   `--object-prefix` : Customise class prefix for C++ object-based API.
   153
   154-   `--object-suffix` : Customise class suffix for C++ object-based API.
   155
   156-   `--go-namespace` : Generate the overrided namespace in Golang.
   157
   158-   `--go-import` : Generate the overrided import for flatbuffers in Golang.
   159     (default is "github.com/google/flatbuffers/go").
   160
   161-   `--raw-binary` : Allow binaries without a file_indentifier to be read.
   162    This may crash flatc given a mismatched schema.
   163
   164-   `--size-prefixed` : Input binaries are size prefixed buffers.
   165
   166-   `--proto`: Expect input files to be .proto files (protocol buffers).
   167    Output the corresponding .fbs file.
   168    Currently supports: `package`, `message`, `enum`, nested declarations,
   169    `import` (use `-I` for paths), `extend`, `oneof`, `group`.
   170    Does not support, but will skip without error: `option`, `service`,
   171    `extensions`, and most everything else.
   172
   173-   `--oneof-union` : Translate .proto oneofs to flatbuffer unions.
   174
   175-   `--grpc` : Generate GRPC interfaces for the specified languages.
   176
   177-   `--schema`: Serialize schemas instead of JSON (use with -b). This will
   178    output a binary version of the specified schema that itself corresponds
   179    to the reflection/reflection.fbs schema. Loading this binary file is the
   180    basis for reflection functionality.
   181
   182-   `--bfbs-comments`: Add doc comments to the binary schema files.
   183
   184-   `--conform FILE` : Specify a schema the following schemas should be
   185    an evolution of. Gives errors if not. Useful to check if schema
   186    modifications don't break schema evolution rules.
   187
   188-   `--conform-includes PATH` : Include path for the schema given with
   189    `--conform PATH`.
   190
   191-   `--filename-suffix SUFFIX` : The suffix appended to the generated
   192    file names. Default is '_generated'.
   193
   194-   `--filename-ext EXTENSION` : The extension appended to the generated
   195    file names. Default is language-specific (e.g. "h" for C++). This
   196    should not be used when multiple languages are specified.
   197
   198-   `--include-prefix PATH` : Prefix this path to any generated include
   199    statements.
   200
   201-   `--keep-prefix` : Keep original prefix of schema include statement.
   202
   203-   `--reflect-types` : Add minimal type reflection to code generation.
   204
   205-   `--reflect-names` : Add minimal type/name reflection.
   206
   207-   `--root-type T` : Select or override the default root_type.
   208
   209-   `--require-explicit-ids` : When parsing schemas, require explicit ids (id: x).
   210
   211-   `--force-defaults` : Emit default values in binary output from JSON.
   212
   213-   `--force-empty` : When serializing from object API representation, force
   214     strings and vectors to empty rather than null.
   215
   216-   `--force-empty-vectors` : When serializing from object API representation, force
   217     vectors to empty rather than null.
   218
   219-   `--flexbuffers` : Used with "binary" and "json" options, it generates
   220     data using schema-less FlexBuffers.
   221
   222-   `--no-warnings` : Inhibit all warning messages.
   223
   224-   `--cs-global-alias` : Prepend `global::` to all user generated csharp classes and structs.
   225
   226-   `--json-nested-bytes` : Allow a nested_flatbuffer field to be parsed as a
   227    vector of bytes in JSON, which is unsafe unless checked by a verifier
   228    afterwards.
   229
   230NOTE: short-form options for generators are deprecated, use the long form
   231whenever possible.

View as plain text