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