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