Usage: thrift [options] file
Options:
-version Print the compiler version
-o dir Set the output directory for gen-* packages
(default: current directory)
-out dir Set the ouput location for generated files.
(no gen-* folder will be created)
-I dir Add a directory to the list of directories
searched for include directives
-nowarn Suppress all compiler warnings (BAD!)
-strict Strict compiler warnings on
-v[erbose] Verbose mode
-r[ecurse] Also generate included files
-debug Parse debug trace to stdout
--allow-neg-keys Allow negative field keys (Used to preserve protocol
compatibility with older .thrift files)
--allow-64bit-consts Do not print warnings about using 64-bit constants
--gen STR Generate code with a dynamically-registered generator.
STR has the form language[:key1=val1[,key2[,key3=val3]]].
Keys and values are options passed to the generator.
Many options will not require values.
Options related to audit operation
--audit OldFile Old Thrift file to be audited with 'file'
--audit-allow-optional-field-removal
Allow explicitly optional fields to be removed
--audit-allow-required-field-to-default
Allow required fields to use default requiredness
Binding-dependent; includes service method arguments
-Iold dir Add a directory to the list of directories
searched for include directives for old thrift file
-Inew dir Add a directory to the list of directories
searched for include directives for new thrift file
Available generators (and options):
c_glib (C, using GLib):
cl (Common Lisp):
no_asd: Do not define ASDF systems for each generated Thrift program.
sys_pref= The prefix to give ASDF system names. Default: thrift-gen-
cpp (C++):
cob_style: Generate "Continuation OBject"-style classes.
no_client_completion:
Omit calls to completion__() in CobClient class.
no_default_operators:
Omits generation of default operators ==, != and <
templates: Generate templatized reader/writer methods.
pure_enums: Generate pure enums instead of wrapper classes.
When 'pure_enums=enum_class', generate C++ 11 enum class.
include_prefix: Use full include paths in generated files.
moveable_types: Generate move constructors and assignment operators.
When 'moveable_types=forward_setter', also generate setters
with perfect forwarding for non-primitive types.
no_ostream_operators:
Omit generation of ostream definitions.
no_skeleton: Omits generation of skeleton.
d (D):
dart (Dart):
library_name: Optional override for library name.
library_prefix: Generate code that can be used within an existing library.
Use a dot-separated string, e.g. "my_parent_lib.src.gen"
pubspec_lib: Optional override for thrift lib dependency in pubspec.yaml,
e.g. "thrift: 0.x.x". Use a pipe delimiter to separate lines,
e.g. "thrift:| git:| url: git@foo.com"
delphi (Delphi):
register_types: Enable TypeRegistry, allows for creation of struct, union
and container instances by interface or TypeInfo()
constprefix: Name TConstants classes after IDL to reduce ambiguities
events: Enable and use processing events in the generated code.
xmldoc: Enable XMLDoc comments for Help Insight etc.
async: Generate IAsync interface to use Parallel Programming Library (XE7+ only).
com_types: Use COM-compatible data types (e.g. WideString).
old_names: Compatibility: generate "reserved" identifiers with '_' postfix instead of '&' prefix.
rtti: Activate {$TYPEINFO} and {$RTTI} at the generated API interfaces.
guid_v4: Use random UUIDv4 (Windows only, legacy). Default: stable UUIDv8.
erl (Erlang):
legacynames: Output files retain naming conventions of Thrift 0.9.1 and earlier.
delimiter= Delimiter between namespace prefix and record name. Default is '.'.
app_prefix= Application prefix for generated Erlang files.
maps: Generate maps instead of dicts.
string= Define string as 'string', 'binary' or 'both'. Default is 'both'.
set= Define sets implementation, supported 'v1' and 'v2'. Default is 'v1'.
type= Define type declaration, supported 'type' and 'nominal'. Default is 'type'.
go (Go):
package_prefix= Package prefix for generated files.
thrift_import= Override thrift package import path (default:github.com/apache/thrift/lib/go/thrift)
package= Package name (default: inferred from thrift file name)
ignore_initialisms
Disable automatic spelling correction of initialisms (e.g. "URL")
read_write_private
Make read/write methods private, default is public Read/Write
skip_remote
Skip the generating of -remote folders for the client binaries for services
struct_key_entries
Generate maps keyed by a struct, union or exception as []thrift.MapEntry[*K, V] instead of map[*K]V
gv (Graphviz):
exceptions: Whether to draw arrows from functions to exception.
haxe (Haxe):
rtti Enable @:rtti for generated classes and interfaces
buildmacro=my.macros.Class.method(args)
Add @:build macro calls to generated classes and interfaces
html (HTML):
standalone: Self-contained mode, includes all CSS in the HTML files.
Generates no style.css file, but HTML files will be larger.
noescape: Do not escape html in doc text.
java (Java):
beans: Members will be private, and setter methods will return void.
private_members: Members will be private, but setter methods will return 'this' like usual.
private-members: Same as 'private_members' (deprecated).
nocamel: Do not use CamelCase field accessors with beans.
fullcamel: Convert underscored_accessor_or_service_names to camelCase.
android: Generated structures are Parcelable.
android_legacy: Do not use java.io.IOException(throwable) (available for Android 2.3 and above).
option_type=[thrift|jdk8]:
thrift: wrap optional fields in thrift Option type.
jdk8: Wrap optional fields in JDK8+ Option type.
If the Option type is not specified, 'thrift' is used.
rethrow_unhandled_exceptions:
Enable rethrow of unhandled exceptions and let them propagate further. (Default behavior is to catch and log it.)
java5: Generate Java 1.5 compliant code (includes android_legacy flag).
future_iface: Generate CompletableFuture based iface based on async client.
reuse_objects: Data objects will not be allocated, but existing instances will be used (read and write).
reuse-objects: Same as 'reuse_objects' (deprecated).
sorted_containers:
Use TreeSet/TreeMap instead of HashSet/HashMap as a implementation of set/map.
generated_annotations=[undated|suppress]:
undated: suppress the date at @Generated annotations
suppress: suppress @Generated annotations entirely
unsafe_binaries: Do not copy ByteBuffers in constructors, getters, and setters.
jakarta_annotations: generate jakarta annotations (javax by default)
annotations_as_metadata:
Include Thrift field annotations as metadata in the generated code.
javame (Java ME):
js (Javascript):
jquery: Generate jQuery compatible code.
node: Generate node.js compatible code.
ts: Generate TypeScript definition files.
with_ns: Create global namespace objects when using node.js
es6: Create ES6 code with Promises
native_promise=[true|false]:
Use native Promise (default true). Set to false to
emit legacy Q-based output (requires the 'q' package).
thrift_package_output_directory=<path>:
Generate episode file and use the <path> as prefix
imports=<paths_to_modules>:
':' separated list of paths of modules that has episode files in their root
json (JSON):
merge: Generate output with included files merged
kotlin (Kotlin):
lua (Lua):
omit_requires: Suppress generation of require 'somefile'.
markdown (Markdown):
suffix=<ext>: Override default file extension (default: md). Use suffix= (empty) for no extension.
noescape: Do not escape with html-entities in doc text.
mmd (Mermaid):
exceptions: Draw dashed arrows from service functions to their declared exceptions.
netstd (C#):
wcf: Adds bindings for WCF to generated classes.
serial: Add serialization support to generated classes.
union: Use new union typing, which includes a static read function for union types.
pascal: Generate Pascal Case property names according to Microsoft naming convention.
net8: Enable features that require net8 and C# 12 or higher.
net9: Enable features that require net9 and C# 13 or higher.
net10: Enable features that require net10 and C# 14 or higher.
no_deepcopy: Suppress generation of DeepCopy() method.
async_postfix: Append "Async" to all service methods (maintains compatibility with existing code).
ocaml (OCaml):
perl (Perl):
php (PHP):
inlined: Generate PHP inlined files
server: Generate PHP server stubs
oop: Generate PHP with object oriented subclasses
classmap: Generate old-style PHP files (use classmap autoloading)
rest: Generate PHP REST processors
nsglobal=NAME: Set global namespace
validate: Generate PHP validator methods
json: Generate JsonSerializable classes (requires PHP >= 5.4)
getters_setters: Generate Getters and Setters for struct variables
py (Python):
zope.interface: Generate code for use with zope.interface.
twisted: Generate Twisted-friendly RPC services.
tornado: Generate code for use with Tornado.
no_utf8strings: Do not Encode/decode strings using utf8 in the generated code. Basically no effect for Python 3.
coding=CODING: Add file encoding declare in generated file.
slots: Generate code using slots for instance members.
dynamic: Generate dynamic code, less code generated but slower.
dynbase=CLS Derive generated classes from class CLS instead of TBase.
dynfrozen=CLS Derive generated immutable classes from class CLS instead of TFrozenBase.
dynexc=CLS Derive generated exceptions from CLS instead of TExceptionBase.
dynfrozenexc=CLS Derive generated immutable exceptions from CLS instead of TFrozenExceptionBase.
dynimport='from foo.bar import CLS'
Add an import line to generated code to find the dynbase class.
package_prefix='top.package.'
Package prefix for generated files.
old_style: Deprecated. Generate old-style classes.
enum: Generates Python's IntEnum, connects thrift to python enums. Python 3.4 and higher.
type_hints: Generate type hints and type checks in write method. Requires the enum option.
rb (Ruby):
rubygems: Add a "require 'rubygems'" line to the top of each generated file.
namespaced: Generate files in idiomatic namespaced directories.
rs (Rust):
crate_prefix=p: Rust path prefix for cross-file imports (default: crate).
Use 'super' when generated files are in a submodule.
st (Smalltalk):
xml (XML):
merge: Generate output with included files merged
no_default_ns: Omit default xmlns and add idl: prefix to all elements
no_namespaces: Do not add namespace definitions to the XML model
xsd (XSD):
Options (17)
| Option | Description | Source |
|---|
-version | Print the compiler version | help |
-o dir | Set the output directory for gen-* packages (default: current directory) | help |
-out dir | Set the ouput location for generated files. | help |
-I dir | Add a directory to the list of directories searched for include directives | help |
-nowarn | Suppress all compiler warnings (BAD!) | help |
-strict | Strict compiler warnings on | help |
-v erbose | Verbose mode | help |
-r ecurse | Also generate included files | help |
-debug | Parse debug trace to stdout | help |
--allow-neg-keys | Allow negative field keys (Used to preserve protocol compatibility with older .thrift files) | help |
--allow-64bit-consts | Do not print warnings about using 64-bit constants | help |
--gen STR | Generate code with a dynamically-registered generator. | help |
--audit OldFile | Old Thrift file to be audited with 'file' | help |
--audit-allow-optional-field-removal | Allow explicitly optional fields to be removed | help |
--audit-allow-required-field-to-default | Allow required fields to use default requiredness Binding-dependent; | help |
-Iold dir | Add a directory to the list of directories searched for include directives for old thrift file | help |
-Inew dir | Add a directory to the list of directories searched for include directives for new thrift file | help |
Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.