mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-03 04:21:13 +00:00
89 lines
2.2 KiB
Markdown
89 lines
2.2 KiB
Markdown
# FlatBuffers Compiler (`flatc`)
|
|
|
|
The main compiler for FlatBuffers is called `flatc` and is used to convert
|
|
schema definitions into generated code files for a variety of languages.
|
|
|
|
After [building](building.md) `flatc`, it is used as follows:
|
|
|
|
```sh
|
|
flatc [ GENERATOR_OPTIONS ] [ -o PATH ] [- I PATH ]
|
|
FILES...
|
|
[ -- BINARY_FILES... ]
|
|
```
|
|
|
|
* The `GENERATOR_OPTIONS` specify the language(s) to compile code for as well as
|
|
various features to enable/disable.
|
|
|
|
* The `-o PATH` specifies the path where the generated files are placed. It
|
|
defaults to the current path if not specified.
|
|
|
|
* The `-I PATH` specifies the paths where included schema files are located. It
|
|
defaults to the current path if not specified.
|
|
|
|
## Input Files
|
|
|
|
`FILES...` specifies one or more schema or data files to process. They are
|
|
processed in the order provided.
|
|
|
|
### Schema Files
|
|
|
|
For schema files, language specifiers indicate what languages to generate code
|
|
for.
|
|
|
|
* `--cpp`: C++
|
|
* `--java`: Java
|
|
* `--kotlin`: Kotlin
|
|
* `--csharp`: C#
|
|
* `--go`: Golang
|
|
* `--python`: Python
|
|
* `--js`: JavaScript
|
|
* `--ts`: TypeScript
|
|
* `--php`: PHP
|
|
* `--dart`: Dart
|
|
* `--lua`: Lua
|
|
* `--lobster`: Lobster
|
|
* `--rust`: Rust
|
|
* `--swift`: Swift
|
|
* `--nim`: Nim
|
|
|
|
Additionally, adding:
|
|
|
|
* `--grpc` Will generate RPC stub code for gRPC (not available in all
|
|
languages)
|
|
|
|
### Data Files
|
|
|
|
If `FILES...` contain data files, they can be exported to either a binary or
|
|
JSON representation.
|
|
|
|
* `--binary`, `-b`: Generate a binary file containing a serialized flatbuffer.
|
|
* `--json`, `-j`: Generate JSON file from a serialized flatbuffer.
|
|
|
|
Both options require the corresponding schema file to be included first in the
|
|
list of `FILES...`.
|
|
|
|
=== "To Binary"
|
|
|
|
To serialize the JSON data in `mydata.json` using the schema `myschema.fbs`:
|
|
|
|
```sh
|
|
flatc --binary myschema.fbs mydata.json
|
|
```
|
|
|
|
This will generate a `mydata_wire.bin` file containing the serialized
|
|
flatbuffer data.
|
|
|
|
=== "To JSON"
|
|
|
|
To convert the serialized binary flatbuffer `mydata.bin` using the schema
|
|
`myschema.fbs` to JSON:
|
|
|
|
```sh
|
|
flatc --json myschema.fbs mydata.bin
|
|
```
|
|
|
|
This will generate a `mydata.json` file.
|
|
|
|
|
|
|