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