FlatBuffers 使用指南
FlatBuffers序列化性能是protobuf的2倍,但size也是protobuf的2倍
编译源码
1
2
3
|
$ git clone https://github.com/google/flatbuffers.git
#切换到最新release版本
$ git checkout v1.2.0
|
安装cmake
http://www.cmake.org.
1
2
3
4
|
for mac osx
$ brew install cmake
for centOS
$ sudo yum install cmake
|
用cmake构建project
1
2
3
|
cmake -G "Unix Makefiles"
cmake -G "Visual Studio 10"
cmake -G "Xcode"
|
在*nix系统,mac osx系统也建议使用 cmake -G "Unix Makefiles"
,生成Makefile
,之后make & make install
编译生成flatc
并安装到系统。
1
2
3
|
$ cmake -G "Unix Makefiles"
$ make
$ make insall
|
使用schema编译器flatc来生成基础代码
1
2
3
|
$ cd samples
#在目录src中生成java代码
$flatc -j -o src monster.fbs
|
编程语言参数:
- –cpp, -c : Generate a C++ header for all definitions in this file (as filename_generated.h).
- –java, -j : Generate Java code.
- –csharp, -n : Generate C# code.
- –go, -g : Generate Go code.
- –python, -p: Generate Python code.
- –javascript, -s: Generate JavaScript code.
- –php: Generate PHP code.
其他常用选项:
- -o PATH 指定源码输出目录
- -I PATH 有include语句时,指定include目录
完整的参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
usage: flatc [OPTION]... FILE... [-- FILE...]
-b Generate wire format binaries for any data definitions.
-t Generate text output for any data definitions.
-c Generate C++ headers for tables/structs.
-g Generate Go files for tables/structs.
-j Generate Java classes for tables/structs.
-s Generate JavaScript code for tables/structs.
-n Generate C# classes for tables/structs.
-p Generate Python files for tables/structs.
-o PATH Prefix PATH to all generated files.
-I PATH Search for includes in the specified path.
-M Print make rules for generated files.
--strict-json Strict JSON: field names must be / will be quoted,
no trailing commas in tables/vectors.
--defaults-json Output fields whose value is the default when
writing JSON
--no-prefix Don't prefix enum values with the enum type in C++.
--scoped-enums Use C++11 style scoped and strongly typed enums.
also implies --no-prefix.
--gen-includes (deprecated), this is the default behavior.
If the original behavior is required (no include
statements) use --no-includes.
--no-includes Don't generate include statements for included
schemas the generated file depends on (C++).
--gen-mutable Generate accessors that can mutate buffers in-place.
--gen-onefile Generate single output file for C#
--raw-binary Allow binaries without file_indentifier to be read.
This may crash flatc given a mismatched schema.
--proto Input is a .proto, translate to .fbs.
--schema Serialize schemas instead of JSON (use with -b)
FILEs may depend on declarations in earlier files.
FILEs after the -- must be binary flatbuffer format files.
Output files are named using the base file name of the input,
and written to the current directory or the path given by -o.
example: flatc -c -b schema1.fbs schema2.fbs data.json
|
写schema IDL文件
参考:http://google.github.io/flatbuffers/flatbuffers_guide_writing_schema.html