1FLATC(1) User Commands FLATC(1)
2
3
4
6 flatc – FlatBuffers compiler
7
9 flatc [OPTION]... FILE... [-- BINARY_FILE...]
10
12 FILEs may be schemas (must end in .fbs), binary schemas (must end in
13 .bfbs), or JSON files (conforming to preceding schema). BINARY_FILEs
14 after the -- must be binary flatbuffer format files.
15
16 Output files are named using the base file name of the input, and writ‐
17 ten to the current directory or the path given by -o.
18
19 --binary, -b
20 Generate wire format binaries for any data definitions.
21
22 --json, -t
23 Generate text output for any data definitions.
24
25 --cpp, -c
26 Generate C++ headers for tables/structs.
27
28 --go, -g
29 Generate Go files for tables/structs.
30
31 --java, -j
32 Generate Java classes for tables/structs.
33
34 --dart, -d
35 Generate Dart classes for tables/structs.
36
37 --ts, -T
38 Generate TypeScript code for tables/structs.
39
40 --csharp, -n
41 Generate C# classes for tables/structs.
42
43 --python, -p
44 Generate Python files for tables/structs.
45
46 --lobster
47 Generate Lobster files for tables/structs.
48
49 --lua, -l
50 Generate Lua files for tables/structs.
51
52 --rust, -r
53 Generate Rust files for tables/structs.
54
55 --php Generate PHP files for tables/structs.
56
57 --kotlin
58 Generate Kotlin classes for tables/structs.
59
60 --jsonschema
61 Generate Json schema.
62
63 --swift
64 Generate Swift files for tables/structs.
65
66 --nim Generate Nim files for tables/structs.
67
68 -o PATH
69 Prefix PATH to all generated files.
70
71 -I PATH
72 Search for includes in the specified path.
73
74 -M Print make(1) rules for generated files.
75
76 --version
77 Print the version number of flatc and exit.
78
79 --strict-json
80 Strict JSON: field names must be / will be quoted, no trailing
81 commas in tables/vectors.
82
83 --allow-non-utf8
84 Pass non-UTF-8 input through parser and emit nonstandard \x es‐
85 capes in JSON. (Default is to raise parse error on non-UTF-8
86 input.)
87
88 --natural-utf8
89 Output strings with UTF-8 as human-readable strings. By de‐
90 fault, UTF-8 characters are printed as \uXXXX escapes.
91
92 --defaults-json
93 Output fields whose value is the default when writing JSON.
94
95 --unknown-json
96 Allow fields in JSON that are not defined in the schema. These
97 fields will be discared when generating binaries.
98
99 --no-prefix
100 Don’t prefix enum values with the enum type in C++.
101
102 --scoped-enums
103 Use C++11 style scoped and strongly typed enums. Also implies
104 --no-prefix.
105
106 --no-emit-min-max-enum-values
107 Disable generation of MIN and MAX enumerated values for scoped
108 enums and prefixed enums.
109
110 --gen-includes
111 (deprecated), this is the default behavior. If the original be‐
112 havior is required (no include statements) use --no-includes.
113
114 --no-includes
115 Don’t generate include statements for included schemas the gen‐
116 erated file depends on (C++ / Python).
117
118 --gen-mutable
119 Generate accessors that can mutate buffers in-place.
120
121 --gen-onefile
122 Generate single output file for C# and Go.
123
124 --gen-name-strings
125 Generate type name functions for C++ and Rust.
126
127 --gen-object-api
128 Generate an additional object-based API.
129
130 --gen-compare
131 Generate operator== for object-based API types.
132
133 --gen-nullable
134 Add Clang _Nullable for C++ pointer. or @Nullable for Java
135
136 --java-package-prefix
137 Add a prefix to the generated package name for Java.
138
139 --java-checkerframework
140 Add @Pure for Java.
141
142 --gen-generated
143 Add @Generated annotation for Java
144
145 --gen-jvmstatic
146 Add @JvmStatic annotation for Kotlin methods in companion object
147 for interop from Java to Kotlin.
148
149 --gen-all
150 Generate not just code for the current schema files, but for all
151 files it includes as well. If the language uses a single file
152 for output (by default the case for C++ and JS), all code will
153 end up in this one file.
154
155 --gen-json-emit
156 Generates encoding code which emits Flatbuffers into JSON.
157
158 --cpp-include
159 Adds an #include in generated file.
160
161 --cpp-ptr-type T
162 Set object API pointer type (default std::unique_ptr).
163
164 --cpp-str-type T
165 Set object API string type (default std::string). T::c_str(),
166 T::length(), and T::empty() must be supported. The custom type
167 also needs to be constructible from std::string (see the
168 --cpp-str-flex-ctor option to change this behavior).
169
170 --cpp-str-flex-ctor
171 Don’t construct custom string types by passing std::string from
172 Flatbuffers, but (char* + length).
173
174 --cpp-std CPP_STD
175 Generate a C++ code using features of selected C++ standard.
176
177 Supported CPP_STD values:
178
179 • c++0x – generate code compatible with old compilers;
180
181 • c++11 – use C++11 code generator (default);
182
183 • c++17 – use C++17 features in generated code (experimental).
184
185 --cpp-static-reflection
186 When using C++17, generate extra code to provide compile-time
187 (static) reflection of Flatbuffers types. Requires --cpp-std to
188 be “c++17” or higher.
189
190 --object-prefix
191 Customise class prefix for C++ object-based API.
192
193 --object-suffix
194 Customise class suffix for C++ object-based API. Default value
195 is “T”.
196
197 --go-namespace
198 Generate the overriding namespace in Golang.
199
200 --go-import
201 Generate the overriding import for flatbuffers in Golang (de‐
202 fault is “github.com/google/flatbuffers/go”).
203
204 --go-module-name
205 Prefix local import paths of generated go code with the module
206 name.
207
208 --raw-binary
209 Allow binaries without file_identifier to be read. This may
210 crash flatc given a mismatched schema.
211
212 --size-prefixed
213 Input binaries are size prefixed buffers.
214
215 --proto-namespace-suffix SUFFIX
216 Add this namespace to any flatbuffers generated from protobufs.
217
218 --oneof-union
219 Translate .proto oneofs to flatbuffer unions.
220
221 --keep-proto-id
222 Keep protobuf field ids in generated fbs file.
223
224 --proto-id-gap
225 Action that should be taken when a gap between protobuf ids
226 found.
227
228 Supported values:
229
230 • nop – do not care about gap
231
232 • warn – A warning message will be shown about the gap in proto‐
233 buf ids (default)
234
235 • error – An error message will be shown and the fbs generation
236 will be interrupted.
237
238 --grpc Generate GRPC interfaces for the specified languages.
239
240 --schema
241 Serialize schemas instead of JSON (use with -b).
242
243 --bfbs-comments
244 Add doc comments to the binary schema files.
245
246 --bfbs-builtins
247 Add builtin attributes to the binary schema files.
248
249 --bfbs-gen-embed
250 Generate code to embed the bfbs schema to the source.
251
252 --conform FILE
253 Specify a schema the following schemas should be an evolution
254 of. Gives errors if not.
255
256 --conform-includes
257 Include path for the schema given with --conform PATH.
258
259 --filename-suffix
260 The suffix appended to the generated file names. Default is
261 ‘_generated’.
262
263 --filename-ext
264 The extension appended to the generated file names. Default is
265 language-specific (e.g., ‘.h’ for C++)
266
267 --include-prefix PATH
268 Prefix this path to any generated include statements.
269
270 --keep-prefix
271 Keep original prefix of schema include statement.
272
273 --reflect-types
274 Add minimal type reflection to code generation.
275
276 --reflect-names
277 Add minimal type/name reflection.
278
279 --rust-serialize
280 Implement serde::Serialize on generated Rust types.
281
282 --rust-module-root-file
283 Generate rust code in individual files with a module root file.
284
285 --root-type T
286 Select or override the default root_type.
287
288 --require-explicit-ids
289 When parsing schemas, require explicit ids (id: x).
290
291 --force-defaults
292 Emit default values in binary output from JSON.
293
294 --force-empty
295 When serializing from object API representation, force strings
296 and vectors to empty rather than null.
297
298 --force-empty-vectors
299 When serializing from object API representation, force vectors
300 to empty rather than null.
301
302 --flexbuffers
303 Used with “binary” and “json” options, it generates data using
304 schema-less FlexBuffers.
305
306 --no-warnings
307 Inhibit all warning messages.
308
309 --warnings-as-errors
310 Treat all warnings as errors.
311
312 --cs-global-alias
313 Prepend “global::” to all user generated csharp classes and
314 structs.
315
316 --cs-gen-json-serializer
317 Allows (de)serialization of JSON text in the Object API. (re‐
318 quires --gen-object-api).
319
320 --json-nested-bytes
321 Allow a nested_flatbuffer field to be parsed as a vector of
322 bytes in JSON, which is unsafe unless checked by a verifier af‐
323 terwards.
324
325 --ts-flat-files
326 Generate a single typescript file per .fbs file. Implies
327 --ts-entry-points.
328
329 --ts-entry-points
330 Generate entry point typescript per namespace. Implies
331 --gen-all.
332
333 --annotate-sparse-vectors SCHEMA
334 Don’t annotate every vector element.
335
336 --annotate SCHEMA
337 Annotate the provided BINARY_FILE with the specified SCHEMA
338 file.
339
340 --no-leak-private-annotation
341 Prevents multiple type of annotations within a Fbs SCHEMA file.
342 Currently this is required to generate private types in Rust.
343
345 flatc -c -b schema1.fbs schema2.fbs data.json
346
348 Official documentation ⟨https://google.github.io/flatbuffers⟩
349
350
351
352 October 2022 FLATC(1)