blob: 54e1e756e6a3709a371220a36dc80d4b3b2e6455 [file] [log] [blame] [edit]
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://flatbuffers.dev/building/">
<link rel="prev" href="../tutorial/">
<link rel="next" href="../flatc/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.16">
<title>Building - FlatBuffers Docs</title>
<link rel="stylesheet" href="../assets/stylesheets/main.7e37652d.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#building" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="FlatBuffers Docs" class="md-header__button md-logo" aria-label="FlatBuffers Docs" data-md-component="logo">
<img src="../assets/flatbuffers_logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
FlatBuffers Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Building
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__source">
<a href="https://github.com/google/flatbuffers" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
google/FlatBuffers
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="FlatBuffers Docs" class="md-nav__button md-logo" aria-label="FlatBuffers Docs" data-md-component="logo">
<img src="../assets/flatbuffers_logo.svg" alt="logo">
</a>
FlatBuffers Docs
</label>
<div class="md-nav__source">
<a href="https://github.com/google/flatbuffers" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
google/FlatBuffers
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../quick_start/" class="md-nav__link">
<span class="md-ellipsis">
Quick Start
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../tutorial/" class="md-nav__link">
<span class="md-ellipsis">
Tutorial
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Compiler (flatc)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Compiler (flatc)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Building
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Building
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#building-with-cmake" class="md-nav__link">
<span class="md-ellipsis">
Building with CMake
</span>
</a>
<nav class="md-nav" aria-label="Building with CMake">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configuration" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
<nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#strict-mode" class="md-nav__link">
<span class="md-ellipsis">
Strict Mode
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#building_1" class="md-nav__link">
<span class="md-ellipsis">
Building
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#building-with-bazel" class="md-nav__link">
<span class="md-ellipsis">
Building with Bazel
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#building-with-vcpkg" class="md-nav__link">
<span class="md-ellipsis">
Building with VCPKG
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#building-for-android" class="md-nav__link">
<span class="md-ellipsis">
Building for Android
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#using-flatbuffers-in-your-own-projects" class="md-nav__link">
<span class="md-ellipsis">
Using FlatBuffers in your own projects
</span>
</a>
<nav class="md-nav" aria-label="Using FlatBuffers in your own projects">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#using-in-cmake-based-projects" class="md-nav__link">
<span class="md-ellipsis">
Using in CMake-based projects
</span>
</a>
<nav class="md-nav" aria-label="Using in CMake-based projects">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#override-default-depth-limit-of-nested-objects" class="md-nav__link">
<span class="md-ellipsis">
Override default depth limit of nested objects
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#downloading-binaries" class="md-nav__link">
<span class="md-ellipsis">
Downloading binaries
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../flatc/" class="md-nav__link">
<span class="md-ellipsis">
Using
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Schema (.fbs)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Schema (.fbs)
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../schema/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../grammar/" class="md-nav__link">
<span class="md-ellipsis">
Grammar
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Language Guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Language Guides
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../languages/c/" class="md-nav__link">
<span class="md-ellipsis">
C
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/cpp/" class="md-nav__link">
<span class="md-ellipsis">
C++
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/c_sharp/" class="md-nav__link">
<span class="md-ellipsis">
C#
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/dart/" class="md-nav__link">
<span class="md-ellipsis">
Dart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/go/" class="md-nav__link">
<span class="md-ellipsis">
Go
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/java/" class="md-nav__link">
<span class="md-ellipsis">
Java
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/javascript/" class="md-nav__link">
<span class="md-ellipsis">
JavaScript
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/kotlin/" class="md-nav__link">
<span class="md-ellipsis">
Kotlin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/lobster/" class="md-nav__link">
<span class="md-ellipsis">
Lobster
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/lua/" class="md-nav__link">
<span class="md-ellipsis">
Lua
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/php/" class="md-nav__link">
<span class="md-ellipsis">
PHP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/python/" class="md-nav__link">
<span class="md-ellipsis">
Python
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/rust/" class="md-nav__link">
<span class="md-ellipsis">
Rust
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/swift/" class="md-nav__link">
<span class="md-ellipsis">
Swift
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../languages/typescript/" class="md-nav__link">
<span class="md-ellipsis">
TypeScript
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../support/" class="md-nav__link">
<span class="md-ellipsis">
Supported Configurations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../white_paper/" class="md-nav__link">
<span class="md-ellipsis">
White Paper
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
Advanced
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Advanced
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../internals/" class="md-nav__link">
<span class="md-ellipsis">
FlatBuffers Internals
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../intermediate_representation/" class="md-nav__link">
<span class="md-ellipsis">
Intermediate Representation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../annotation/" class="md-nav__link">
<span class="md-ellipsis">
Annotating Buffers (.afb)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../benchmarks/" class="md-nav__link">
<span class="md-ellipsis">
Benchmarks
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../flexbuffers/" class="md-nav__link">
<span class="md-ellipsis">
FlexBuffers (Schema-less version)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../contributing/" class="md-nav__link">
<span class="md-ellipsis">
Contributing
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#building-with-cmake" class="md-nav__link">
<span class="md-ellipsis">
Building with CMake
</span>
</a>
<nav class="md-nav" aria-label="Building with CMake">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#configuration" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
<nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#strict-mode" class="md-nav__link">
<span class="md-ellipsis">
Strict Mode
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#building_1" class="md-nav__link">
<span class="md-ellipsis">
Building
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#building-with-bazel" class="md-nav__link">
<span class="md-ellipsis">
Building with Bazel
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#building-with-vcpkg" class="md-nav__link">
<span class="md-ellipsis">
Building with VCPKG
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#building-for-android" class="md-nav__link">
<span class="md-ellipsis">
Building for Android
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#using-flatbuffers-in-your-own-projects" class="md-nav__link">
<span class="md-ellipsis">
Using FlatBuffers in your own projects
</span>
</a>
<nav class="md-nav" aria-label="Using FlatBuffers in your own projects">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#using-in-cmake-based-projects" class="md-nav__link">
<span class="md-ellipsis">
Using in CMake-based projects
</span>
</a>
<nav class="md-nav" aria-label="Using in CMake-based projects">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#override-default-depth-limit-of-nested-objects" class="md-nav__link">
<span class="md-ellipsis">
Override default depth limit of nested objects
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#downloading-binaries" class="md-nav__link">
<span class="md-ellipsis">
Downloading binaries
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/google/flatbuffers/edit/master/docs/source/building.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
</a>
<h1 id="building">Building</h1>
<h2 id="building-with-cmake">Building with CMake</h2>
<p>The distribution main build system is configured by
<a href="https://www.cmake.org"><code>cmake</code></a> which allows you to build the project for any
platform.</p>
<h3 id="configuration">Configuration</h3>
<p>Use <code>cmake</code> to configure a project based on your environment and platform.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:1"><input checked="checked" id="unix" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="unix">Unix</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>cmake<span class="w"> </span>-G<span class="w"> </span><span class="s2">&quot;Unix Makefiles&quot;</span><span class="w"> </span>-DCMAKE_BUILD_TYPE<span class="o">=</span>Release
</code></pre></div>
</div>
</div>
</div>
<p>To use <code>clang</code> instead of <code>gcc</code> you may need to set prepend some environment
variables e.g. <code>CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -G "Unix
MakeFiles"</code></p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="windows" name="__tabbed_2" type="radio" /><input id="macos" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="windows">Windows</label><label for="macos">MacOS</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>cmake<span class="w"> </span>-G<span class="w"> </span><span class="s2">&quot;Visual Studio 17 2022&quot;</span><span class="w"> </span>-DCMAKE_BUILD_TYPE<span class="o">=</span>Release
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>cmake<span class="w"> </span>-G<span class="w"> </span><span class="s2">&quot;Xcode&quot;</span><span class="w"> </span>-DCMAKE_BUILD_TYPE<span class="o">=</span>Release
</code></pre></div>
</div>
</div>
</div>
<h4 id="strict-mode">Strict Mode</h4>
<p>By default, <code>cmake</code> will configure targets to <strong>not</strong> build with strict warnings
on (e.g. <code>-Werror</code> or <code>/WX</code>). This may cause into issues when submitting code
changes since our CI requires the code to compile in strict mode.</p>
<p>To enable the extra warnings, turn on strict mode with the
<code>FLATBUFFERS_STRICT_MODE</code> cmake option.</p>
<div class="highlight"><pre><span></span><code><span class="err">cmake</span><span class="w"> </span><span class="err">-DFLATBUFFERS_STRICT_MODE=ON</span>
</code></pre></div>
<h3 id="building_1">Building</h3>
<p>Once the project files are generated, build as normal for your platform.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:3"><input checked="checked" id="unix_1" name="__tabbed_3" type="radio" /><input id="windows_1" name="__tabbed_3" type="radio" /><input id="macos_1" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="unix_1">Unix</label><label for="windows_1">Windows</label><label for="macos_1">MacOS</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>make<span class="w"> </span>-j
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>msbuild.exe<span class="w"> </span>FlatBuffers.sln
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><pre><span></span><code>xcodebuild<span class="w"> </span>-toolchain<span class="w"> </span>clang<span class="w"> </span>-configuration<span class="w"> </span>Release
</code></pre></div>
</div>
</div>
</div>
<h2 id="building-with-bazel">Building with Bazel</h2>
<p>You can use <a href="https://github.com/bazelbuild/bazelisk">Bazelisk</a> to manage your Bazel environment.
For Swift support, you also need Clang and <a href="https://download.swift.org/">Swift SDK</a>.</p>
<div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-sL<span class="w"> </span>--fail<span class="w"> </span>https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-amd64<span class="w"> </span>-o<span class="w"> </span>bazelisk<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>chmod<span class="w"> </span>+x<span class="w"> </span>bazelisk
sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>-y<span class="w"> </span>clang
<span class="nv">SWIFT_VERSION</span><span class="o">=</span><span class="s2">&quot;6.0.3&quot;</span>
curl<span class="w"> </span>-L<span class="w"> </span>https://download.swift.org/swift-<span class="si">${</span><span class="nv">SWIFT_VERSION</span><span class="si">}</span>-release/debian12/swift-<span class="si">${</span><span class="nv">SWIFT_VERSION</span><span class="si">}</span>-RELEASE/swift-<span class="si">${</span><span class="nv">SWIFT_VERSION</span><span class="si">}</span>-RELEASE-debian12.tar.gz<span class="w"> </span><span class="p">|</span><span class="w"> </span>tar<span class="w"> </span>xz
<span class="nv">CC</span><span class="o">=</span>clang<span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>/swift-<span class="si">${</span><span class="nv">SWIFT_VERSION</span><span class="si">}</span>-RELEASE-debian12/usr/bin<span class="w"> </span>bazel<span class="w"> </span>build<span class="w"> </span>//...
<span class="nv">CC</span><span class="o">=</span>clang<span class="w"> </span><span class="nv">PATH</span><span class="o">=</span><span class="nv">$PATH</span>:<span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>/swift-<span class="si">${</span><span class="nv">SWIFT_VERSION</span><span class="si">}</span>-RELEASE-debian12/usr/bin<span class="w"> </span>bazel<span class="w"> </span><span class="nb">test</span><span class="w"> </span>//...
</code></pre></div>
<p>If you are unsure which versions to use, check our CI config at <code>.bazelci/presubmit.yml</code>.</p>
<h2 id="building-with-vcpkg">Building with VCPKG</h2>
<p>You can download and install flatbuffers using the <a href="https://github.com/Microsoft/vcpkg/">vcpkg</a> dependency manager:</p>
<div class="highlight"><pre><span></span><code>git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install flatbuffers
</code></pre></div>
<p>The flatbuffers port in vcpkg is kept up to date by Microsoft team members and community contributors.
If the version is out of date, please <a href="https://github.com/Microsoft/vcpkg">create an issue or pull request</a> on the vcpkg repository.</p>
<h2 id="building-for-android">Building for Android</h2>
<p>There is a <code>flatbuffers/android</code> directory that contains all you need to build
the test executable on android (use the included <code>build_apk.sh</code> script, or use
<code>ndk_build</code> / <code>adb</code> etc. as usual). Upon running, it will output to the log
if tests succeeded or not.</p>
<p>You may also run an android sample from inside the <code>flatbuffers/samples</code>, by
running the <code>android_sample.sh</code> script. Optionally, you may go to the
<code>flatbuffers/samples/android</code> folder and build the sample with the
<code>build_apk.sh</code> script or <code>ndk_build</code> / <code>adb</code> etc.</p>
<h2 id="using-flatbuffers-in-your-own-projects">Using FlatBuffers in your own projects</h2>
<p>For C++, there is usually no runtime to compile, as the code consists of a
single header, <code>include/flatbuffers/flatbuffers.h</code>. You should add the
<code>include</code> folder to your include paths. If you wish to be
able to load schemas and/or parse text into binary buffers at runtime,
you additionally need the other headers in <code>include/flatbuffers</code>. You must
also compile/link <code>src/idl_parser.cpp</code> (and <code>src/idl_gen_text.cpp</code> if you
also want to be able convert binary to text).</p>
<p>To see how to include FlatBuffers in any of our supported languages, please
view the <a href="../tutorial/">Tutorial</a> and select your appropriate
language using the radio buttons.</p>
<h3 id="using-in-cmake-based-projects">Using in CMake-based projects</h3>
<p>If you want to use FlatBuffers in a project which already uses CMake, then a more
robust and flexible approach is to build FlatBuffers as part of that project directly.
This is done by making the FlatBuffers source code available to the main build
and adding it using CMake's <code>add_subdirectory()</code> command. This has the
significant advantage that the same compiler and linker settings are used
between FlatBuffers and the rest of your project, so issues associated with using
incompatible libraries (eg debug/release), etc. are avoided. This is
particularly useful on Windows.</p>
<p>Suppose you put FlatBuffers source code in directory <code>${FLATBUFFERS_SRC_DIR}</code>.
To build it as part of your project, add following code to your <code>CMakeLists.txt</code> file:
<div class="highlight"><pre><span></span><code><span class="c"># Add FlatBuffers directly to our build. This defines the `flatbuffers` target.</span>
<span class="nb">add_subdirectory</span><span class="p">(</span><span class="o">${</span><span class="nv">FLATBUFFERS_SRC_DIR</span><span class="o">}</span>
<span class="w"> </span><span class="o">${</span><span class="nv">CMAKE_CURRENT_BINARY_DIR</span><span class="o">}</span><span class="s">/flatbuffers-build</span>
<span class="w"> </span><span class="s">EXCLUDE_FROM_ALL</span><span class="p">)</span>
<span class="c"># Now simply link against flatbuffers as needed to your already declared target.</span>
<span class="c"># The flatbuffers target carry header search path automatically if CMake &gt; 2.8.11.</span>
<span class="nb">target_link_libraries</span><span class="p">(</span><span class="s">own_project_target</span><span class="w"> </span><span class="s">PRIVATE</span><span class="w"> </span><span class="s">flatbuffers</span><span class="p">)</span>
</code></pre></div>
When build your project the <code>flatbuffers</code> library will be compiled and linked
to a target as part of your project.</p>
<h4 id="override-default-depth-limit-of-nested-objects">Override default depth limit of nested objects</h4>
<p>To override <a href="../languages/cpp/">the depth limit of recursion</a>,
add this directive:
<div class="highlight"><pre><span></span><code><span class="nb">set</span><span class="p">(</span><span class="s">FLATBUFFERS_MAX_PARSING_DEPTH</span><span class="w"> </span><span class="s">16</span><span class="p">)</span>
</code></pre></div>
to <code>CMakeLists.txt</code> file before <code>add_subdirectory(${FLATBUFFERS_SRC_DIR})</code> line.</p>
<h2 id="downloading-binaries">Downloading binaries</h2>
<p>You can download the binaries from the
<a href="https://github.com/google/flatbuffers/releases">GitHub release page</a>.</p>
<p>We generate <a href="http://slsa.dev">SLSA3 signatures</a> using the OpenSSF's <a href="https://github.com/slsa-framework/slsa-github-generator">slsa-framework/slsa-github-generator</a>. To verify the binaries:
1. Install the verification tool from <a href="https://github.com/slsa-framework/slsa-verifier#installation">slsa-framework/slsa-verifier#installation</a>
1. Download the file named <code>attestation.intoto.jsonl</code> from the GitHub release
1. Run:
<div class="highlight"><pre><span></span><code>$<span class="w"> </span>slsa-verifier<span class="w"> </span>-artifact-path<span class="w"> </span>&lt;downloaded.zip&gt;<span class="w"> </span>-provenance<span class="w"> </span>attestation.intoto.jsonl<span class="w"> </span>-source<span class="w"> </span>github.com/google/flatbuffers<span class="w"> </span>-tag<span class="w"> </span>&lt;version&gt;
<span class="w"> </span>PASSED:<span class="w"> </span>Verified<span class="w"> </span>SLSA<span class="w"> </span>provenance
</code></pre></div></p>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="../tutorial/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Tutorial">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
Tutorial
</div>
</div>
</a>
<a href="../flatc/" class="md-footer__link md-footer__link--next" aria-label="Next: Using">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
Using
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2025 Google
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/google/flatbuffers" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</a>
<a href="https:///discord.gg/6qgKs3R" target="_blank" rel="noopener" title="" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M492.5 69.8c-.2-.3-.4-.6-.8-.7-38.1-17.5-78.4-30-119.7-37.1-.4-.1-.8 0-1.1.1s-.6.4-.8.8c-5.5 9.9-10.5 20.2-14.9 30.6-44.6-6.8-89.9-6.8-134.4 0-4.5-10.5-9.5-20.7-15.1-30.6-.2-.3-.5-.6-.8-.8s-.7-.2-1.1-.2C162.5 39 122.2 51.5 84.1 69c-.3.1-.6.4-.8.7C7.1 183.5-13.8 294.6-3.6 404.2c0 .3.1.5.2.8s.3.4.5.6c44.4 32.9 94 58 146.8 74.2.4.1.8.1 1.1 0s.7-.4.9-.7c11.3-15.4 21.4-31.8 30-48.8.1-.2.2-.5.2-.8s0-.5-.1-.8-.2-.5-.4-.6-.4-.3-.7-.4c-15.8-6.1-31.2-13.4-45.9-21.9-.3-.2-.5-.4-.7-.6s-.3-.6-.3-.9 0-.6.2-.9.3-.5.6-.7c3.1-2.3 6.2-4.7 9.1-7.1.3-.2.6-.4.9-.4s.7 0 1 .1c96.2 43.9 200.4 43.9 295.5 0 .3-.1.7-.2 1-.2s.7.2.9.4c2.9 2.4 6 4.9 9.1 7.2.2.2.4.4.6.7s.2.6.2.9-.1.6-.3.9-.4.5-.6.6c-14.7 8.6-30 15.9-45.9 21.8-.2.1-.5.2-.7.4s-.3.4-.4.7-.1.5-.1.8.1.5.2.8c8.8 17 18.8 33.3 30 48.8.2.3.6.6.9.7s.8.1 1.1 0c52.9-16.2 102.6-41.3 147.1-74.2.2-.2.4-.4.5-.6s.2-.5.2-.8c12.3-126.8-20.5-236.9-86.9-334.5zm-302 267.7c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.4 59.2-52.8 59.2m195.4 0c-29 0-52.8-26.6-52.8-59.2s23.4-59.2 52.8-59.2c29.7 0 53.3 26.8 52.8 59.2 0 32.7-23.2 59.2-52.8 59.2"/></svg>
</a>
<a href="https://twitter.com/dbaileychess" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path fill="currentColor" d="M357.2 48h70.6L273.6 224.2 455 464H313L201.7 318.6 74.5 464H3.8l164.9-188.5L-5.2 48h145.6l100.5 132.9zm-24.8 373.8h39.1L119.1 88h-42z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "content.tabs.link", "navigation.expand", "navigation.footer", "header.autohide", "content.action.edit"], "search": "../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../assets/javascripts/bundle.50899def.min.js"></script>
</body>
</html>