blob: 63b14f2eb77fc410b0ef0a1f53c18e3eec116925 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>Using Arrow C++ in your own project &#8212; Apache Arrow v17.0.0.dev52</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/sphinx_highlight.js"></script>
<script src="../_static/clipboard.min.js"></script>
<script src="../_static/copybutton.js"></script>
<script src="../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'cpp/build_system';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/cpp/build_system.html" />
<link rel="icon" href="../_static/favicon.ico"/>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Conventions" href="conventions.html" />
<link rel="prev" title="Getting Started" href="getting_started.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../index.html">
<img src="../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev52 - Home"/>
<script>document.write(`<img src="../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../format/index.html">
Specifications
</a>
</li>
<li class="nav-item">
<a class="nav-link nav-internal" href="../developers/index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item current active">
<a class="nav-link dropdown-item nav-internal" href="index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1 current active has-children"><a class="reference internal" href="getting_started.html">Getting Started</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul class="current">
<li class="toctree-l2 current active"><a class="current reference internal" href="#">Using Arrow C++ in your own project</a></li>
<li class="toctree-l2"><a class="reference internal" href="conventions.html">Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="tutorials/basic_arrow.html">Basic Arrow Data Structures</a></li>
<li class="toctree-l2"><a class="reference internal" href="tutorials/io_tutorial.html">Arrow File I/O</a></li>
<li class="toctree-l2"><a class="reference internal" href="tutorials/compute_tutorial.html">Arrow Compute</a></li>
<li class="toctree-l2"><a class="reference internal" href="tutorials/datasets_tutorial.html">Arrow Datasets</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="user_guide.html">User Guide</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="overview.html">High-Level Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="memory.html">Memory Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="arrays.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="datatypes.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="tables.html">Tabular Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="compute.html">Compute Functions</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="gandiva.html">The Gandiva Expression Compiler</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="gandiva/expr_projector_filter.html">Gandiva Expression, Projector, and Filter</a></li>
<li class="toctree-l3"><a class="reference internal" href="gandiva/external_func.html">Gandiva External Functions Development Guide</a></li>
</ul>
</li>
<li class="toctree-l2 has-children"><a class="reference internal" href="streaming_execution.html">Acero: A C++ streaming execution engine</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="acero/overview.html">Acero Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="acero/user_guide.html">Acero User’s Guide</a></li>
<li class="toctree-l3"><a class="reference internal" href="acero/substrait.html">Using Acero with Substrait</a></li>
<li class="toctree-l3"><a class="reference internal" href="acero/developer_guide.html">Developer’s Guide</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="io.html">Input / output and filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="ipc.html">Reading and writing the Arrow IPC format</a></li>
<li class="toctree-l2"><a class="reference internal" href="orc.html">Reading and Writing ORC files</a></li>
<li class="toctree-l2"><a class="reference internal" href="parquet.html">Reading and writing Parquet files</a></li>
<li class="toctree-l2"><a class="reference internal" href="csv.html">Reading and Writing CSV files</a></li>
<li class="toctree-l2"><a class="reference internal" href="json.html">Reading JSON files</a></li>
<li class="toctree-l2"><a class="reference internal" href="dataset.html">Tabular Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="gdb.html">Debugging code using Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="threading.html">Thread Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="opentelemetry.html">OpenTelemetry</a></li>
<li class="toctree-l2"><a class="reference internal" href="env_vars.html">Environment Variables</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="examples/index.html">Examples</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="examples/cmake_minimal_build.html">Minimal build using CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples/compute_and_write_example.html">Compute and Write CSV Example</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples/dataset_documentation_example.html">Arrow Datasets example</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples/dataset_skyhook_scan_example.html">Arrow Skyhook example</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples/row_columnar_conversion.html">Row to columnar conversion</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples/tuple_range_conversion.html">std::tuple-like ranges to Arrow</a></li>
<li class="toctree-l2"><a class="reference internal" href="examples/converting_recordbatch_to_tensor.html">Converting RecordBatch to Tensor</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="api.html">API Reference</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="api/support.html">Programming Support</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/memory.html">Memory (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/thread.html">Thread (management)</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/datatype.html">Data Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/array.html">Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/scalar.html">Scalars</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/builder.html">Array Builders</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/table.html">Two-dimensional Datasets</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/c_abi.html">C Interfaces</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/compute.html">Compute Functions</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/acero.html">Streaming Execution (Acero)</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/gandiva.html">Gandiva Expression Compiler</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/tensor.html">Tensors</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/utilities.html">Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/async.html">Asynchronous programming</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/io.html">Input / output</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/ipc.html">Arrow IPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/formats.html">File Formats</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/cuda.html">CUDA support</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/flight.html">Arrow Flight RPC</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/flightsql.html">Arrow Flight SQL</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/filesystem.html">Filesystems</a></li>
<li class="toctree-l2"><a class="reference internal" href="api/dataset.html">Dataset</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external" href="https://arrow.apache.org/cookbook/cpp/">C++ cookbook</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="index.html" class="nav-link">C++ Implementation</a></li>
<li class="breadcrumb-item"><a href="getting_started.html" class="nav-link">Getting Started</a></li>
<li class="breadcrumb-item active" aria-current="page">Using Arrow...</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="using-arrow-c-in-your-own-project">
<h1>Using Arrow C++ in your own project<a class="headerlink" href="#using-arrow-c-in-your-own-project" title="Permalink to this heading">#</a></h1>
<p>This section assumes you already have the Arrow C++ libraries on your
system, either after <a class="reference external" href="https://arrow.apache.org/install/">installing them using a package manager</a> or after
<a class="reference internal" href="../developers/cpp/building.html#building-arrow-cpp"><span class="std std-ref">building them yourself</span></a>.</p>
<p>The recommended way to integrate the Arrow C++ libraries in your own
C++ project is to use CMake’s <a class="reference external" href="https://cmake.org/cmake/help/latest/command/find_package.html">find_package</a>
function for locating and integrating dependencies. If you don’t use
CMake as a build system, you can use <a class="reference external" href="https://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</a> to find
installed the Arrow C++ libraries.</p>
<section id="cmake">
<h2>CMake<a class="headerlink" href="#cmake" title="Permalink to this heading">#</a></h2>
<section id="basic-usage">
<h3>Basic usage<a class="headerlink" href="#basic-usage" title="Permalink to this heading">#</a></h3>
<p>This minimal <code class="docutils literal notranslate"><span class="pre">CMakeLists.txt</span></code> file compiles a <code class="docutils literal notranslate"><span class="pre">my_example.cc</span></code> source
file into an executable linked with the Arrow C++ shared library:</p>
<div class="highlight-cmake notranslate"><div class="highlight"><pre><span></span><span class="nb">cmake_minimum_required</span><span class="p">(</span><span class="s">VERSION</span><span class="w"> </span><span class="s">3.16</span><span class="p">)</span>
<span class="nb">project</span><span class="p">(</span><span class="s">MyExample</span><span class="p">)</span>
<span class="nb">find_package</span><span class="p">(</span><span class="s">Arrow</span><span class="w"> </span><span class="s">REQUIRED</span><span class="p">)</span>
<span class="nb">add_executable</span><span class="p">(</span><span class="s">my_example</span><span class="w"> </span><span class="s">my_example.cc</span><span class="p">)</span>
<span class="nb">target_link_libraries</span><span class="p">(</span><span class="s">my_example</span><span class="w"> </span><span class="s">PRIVATE</span><span class="w"> </span><span class="s">Arrow::arrow_shared</span><span class="p">)</span>
</pre></div>
</div>
</section>
<section id="available-variables-and-targets">
<h3>Available variables and targets<a class="headerlink" href="#available-variables-and-targets" title="Permalink to this heading">#</a></h3>
<p>The directive <code class="docutils literal notranslate"><span class="pre">find_package(Arrow</span> <span class="pre">REQUIRED)</span></code> asks CMake to find an Arrow
C++ installation on your system. When it returns, it will have set a few
CMake variables:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">${Arrow_FOUND}</span></code> is true if the Arrow C++ libraries have been found</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">${ARROW_VERSION}</span></code> contains the Arrow version string</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">${ARROW_FULL_SO_VERSION}</span></code> contains the Arrow DLL version string</p></li>
</ul>
<p>In addition, it will have created some targets that you can link against
(note these are plain strings, not variables):</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">Arrow::arrow_shared</span></code> links to the Arrow shared libraries</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Arrow::arrow_static</span></code> links to the Arrow static libraries</p></li>
</ul>
<p>For backwards compatibility purposes the <code class="docutils literal notranslate"><span class="pre">arrow_shared</span></code> and <code class="docutils literal notranslate"><span class="pre">arrow_static</span></code>
targets are also available but we recommend using <code class="docutils literal notranslate"><span class="pre">Arrow::arrow_shared</span></code> and
<code class="docutils literal notranslate"><span class="pre">Arrow::arrow_static</span></code> respectively.</p>
<p>In most cases, it is recommended to use the Arrow shared libraries.</p>
<p>If Arrow is installed on a custom path instead of a common system one you
will have to add the path where Arrow is installed to <code class="docutils literal notranslate"><span class="pre">CMAKE_PREFIX_PATH</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">CMAKE_PREFIX_PATH</span></code> can be defined as a <a class="reference external" href="https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html">CMake variable</a> or an
<a class="reference external" href="https://cmake.org/cmake/help/latest/envvar/CMAKE_PREFIX_PATH.html">environment variable</a>.</p>
<p>Your system might already have a <code class="docutils literal notranslate"><span class="pre">CMAKE_PREFIX_PATH</span></code> environment variable
defined, use the following to expand it with the path to your Arrow
installation. In this case <code class="docutils literal notranslate"><span class="pre">ARROW_ROOT</span></code> is expected to contain the
path to your Arrow installation:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span><span class="w"> </span><span class="nv">CMAKE_PREFIX_PATH</span><span class="o">=</span><span class="si">${</span><span class="nv">ARROW_ROOT</span><span class="si">}${</span><span class="nv">CMAKE_PREFIX_PATH</span><span class="p">:+:</span><span class="si">${</span><span class="nv">CMAKE_PREFIX_PATH</span><span class="si">}}</span>
</pre></div>
</div>
<p>In the case of using a CMake variable you can add it when configuring the
project like the following to contain the possible existing
<code class="docutils literal notranslate"><span class="pre">CMAKE_PREFIX_PATH</span></code> environment variable:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>cmake<span class="w"> </span>...<span class="w"> </span>-DCMAKE_PREFIX_PATH<span class="o">=</span><span class="si">${</span><span class="nv">ARROW_ROOT</span><span class="si">}${</span><span class="nv">CMAKE_PREFIX_PATH</span><span class="p">:+:</span><span class="si">${</span><span class="nv">CMAKE_PREFIX_PATH</span><span class="si">}}</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The usage of <code class="docutils literal notranslate"><span class="pre">COMPONENTS</span></code> on our <code class="docutils literal notranslate"><span class="pre">find_package</span></code> implementation is
currently not supported.</p>
</div>
</section>
<section id="other-available-packages">
<h3>Other available packages<a class="headerlink" href="#other-available-packages" title="Permalink to this heading">#</a></h3>
<p>There are other available packages, they can also be used with the <a class="reference external" href="https://cmake.org/cmake/help/latest/command/find_package.html">find_package</a> directive.
This is the list of available ones and the respective targets created:</p>
<table class="table">
<thead>
<tr class="row-odd"><th class="head"><p>find_package usage</p></th>
<th class="head"><p>shared target</p></th>
<th class="head"><p>static target</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowCUDA</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowCUDA::arrow_cuda_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowCUDA::arrow_cuda_static</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowDataset</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowDataset::arrow_dataset_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowDataset::arrow_dataset_static</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowFlight</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowFlight::arrow_flight_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowFlight::arrow_flight_static</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowFlightSql</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowFlightSql::arrow_flight_sql_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowFlightSql::arrow_flight_sql_static</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowFlightTesting</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowFlightTesting::arrow_flight_testing_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowFlightTesting::arrow_flight_testing_static</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowSubstrait</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowSubstrait::arrow_substrait_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowSubstrait::arrow_substrait_static</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(ArrowTesting</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowTesting::arrow_testing_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">ArrowTesting::arrow_testing_static</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(Gandiva</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Gandiva::gandiva_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Gandiva::gandiva_static</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">find_package(Parquet</span> <span class="pre">REQUIRED)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Parquet::parquet_shared</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">Parquet::parquet_static</span></code></p></td>
</tr>
</tbody>
</table>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>CMake is case-sensitive. The names and variables listed above have to be
spelt exactly that way!</p>
</div>
<div class="admonition seealso">
<p class="admonition-title">See also</p>
<p>A Docker-based <a class="reference internal" href="examples/cmake_minimal_build.html"><span class="doc">minimal build example</span></a>.</p>
</div>
</section>
</section>
<section id="id2">
<h2>pkg-config<a class="headerlink" href="#id2" title="Permalink to this heading">#</a></h2>
<section id="id3">
<h3>Basic usage<a class="headerlink" href="#id3" title="Permalink to this heading">#</a></h3>
<p>You can get suitable build flags by the following command line:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pkg-config<span class="w"> </span>--cflags<span class="w"> </span>--libs<span class="w"> </span>arrow
</pre></div>
</div>
<p>If you want to link the Arrow C++ static library, you need to add
<code class="docutils literal notranslate"><span class="pre">--static</span></code> option:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pkg-config<span class="w"> </span>--cflags<span class="w"> </span>--libs<span class="w"> </span>--static<span class="w"> </span>arrow
</pre></div>
</div>
<p>This minimal <code class="docutils literal notranslate"><span class="pre">Makefile</span></code> file compiles a <code class="docutils literal notranslate"><span class="pre">my_example.cc</span></code> source
file into an executable linked with the Arrow C++ shared library:</p>
<div class="highlight-makefile notranslate"><div class="highlight"><pre><span></span><span class="nf">my_example</span><span class="o">:</span><span class="w"> </span><span class="n">my_example</span>.<span class="n">cc</span>
<span class="w"> </span><span class="k">$(</span>CXX<span class="k">)</span><span class="w"> </span>-o<span class="w"> </span><span class="nv">$@</span><span class="w"> </span><span class="k">$(</span>CXXFLAGS<span class="k">)</span><span class="w"> </span>$&lt;<span class="w"> </span><span class="nv">$$</span><span class="o">(</span>pkg-config<span class="w"> </span>--cflags<span class="w"> </span>--libs<span class="w"> </span>arrow<span class="o">)</span>
</pre></div>
</div>
<p>Many build systems support pkg-config. For example:</p>
<blockquote>
<div><ul class="simple">
<li><p><a class="reference external" href="https://people.freedesktop.org/~dbn/pkg-config-guide.html#using">GNU Autotools</a></p></li>
<li><p><a class="reference external" href="https://cmake.org/cmake/help/latest/module/FindPkgConfig.html">CMake</a>
(But you should use <code class="docutils literal notranslate"><span class="pre">find_package(Arrow)</span></code> instead.)</p></li>
<li><p><a class="reference external" href="https://mesonbuild.com/Reference-manual.html#dependency">Meson</a></p></li>
</ul>
</div></blockquote>
</section>
<section id="available-packages">
<h3>Available packages<a class="headerlink" href="#available-packages" title="Permalink to this heading">#</a></h3>
<p>The Arrow C++ provides a pkg-config package for each module. Here are
all available packages:</p>
<blockquote>
<div><ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-csv</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-cuda</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-dataset</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-filesystem</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-flight-testing</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-flight</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-json</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-orc</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-python-flight</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-python</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-tensorflow</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow-testing</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">arrow</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">gandiva</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">parquet</span></code></p></li>
</ul>
</div></blockquote>
</section>
</section>
<section id="a-note-on-linking">
<h2>A Note on Linking<a class="headerlink" href="#a-note-on-linking" title="Permalink to this heading">#</a></h2>
<p>Some Arrow components have dependencies that you may want to use in your own
project. Care must be taken to ensure that your project links the same version
of these dependencies in the same way (statically or dynamically) as Arrow,
else <a class="reference external" href="https://en.wikipedia.org/wiki/One_Definition_Rule">ODR</a> violations may
result and your program may crash or silently corrupt data.</p>
<p>In particular, Arrow Flight and its dependencies <a class="reference external" href="https://developers.google.com/protocol-buffers/">Protocol Buffers (Protobuf)</a> and <a class="reference external" href="https://grpc.io/">gRPC</a> are likely to cause issues. When using Arrow Flight, note
the following guidelines:</p>
<ul class="simple">
<li><p>If statically linking Arrow Flight, Protobuf and gRPC must also be statically
linked, and the same goes for dynamic linking.</p></li>
<li><p>Some platforms (e.g. Ubuntu 20.04 at the time of this writing) may ship a
version of Protobuf and/or gRPC that is not recent enough for Arrow
Flight. In that case, Arrow Flight bundles these dependencies, so care must
be taken not to mix the Arrow Flight library with the platform Protobuf/gRPC
libraries (as then you will have two versions of Protobuf and/or gRPC linked
into your application).</p></li>
</ul>
<p>It may be easiest to depend on a version of Arrow built from source, where you
can control the source of each dependency and whether it is statically or
dynamically linked. See <a class="reference internal" href="../developers/cpp/building.html"><span class="doc">Building Arrow C++</span></a> for instructions. Or
alternatively, use Arrow from a package manager such as Conda or vcpkg which
will manage consistent versions of Arrow and its dependencies.</p>
</section>
<section id="runtime-dependencies">
<span id="download-timezone-database"></span><h2>Runtime Dependencies<a class="headerlink" href="#runtime-dependencies" title="Permalink to this heading">#</a></h2>
<p>While Arrow uses the OS-provided timezone database on Linux and macOS, it
requires a user-provided database on Windows. You must download and extract the
text version of the IANA timezone database and add the Windows timezone mapping
XML. To download, you can use the following batch script:</p>
<div class="highlight-batch notranslate"><div class="highlight"><pre><span></span>curl https://data.iana.org/time-zones/releases/tzdata2021e.tar.gz --output tzdata.tar.gz
<span class="k">mkdir</span> tzdata
tar --extract --file tzdata.tar.gz --directory tzdata
<span class="k">move</span> tzdata <span class="nv">%USERPROFILE%</span>\Downloads\tzdata
<span class="p">@</span><span class="c1">rem Also need Windows timezone mapping</span>
curl https://raw.githubusercontent.com/unicode-org/cldr/master/common/supplemental/windowsZones.xml <span class="se">^</span>
<span class="se"> </span> --output <span class="nv">%USERPROFILE%</span>\Downloads\tzdata\windowsZones.xml
</pre></div>
</div>
<p>By default, the timezone database will be detected at <code class="docutils literal notranslate"><span class="pre">%USERPROFILE%\Downloads\tzdata</span></code>,
but you can set a custom path at runtime in <code class="xref cpp cpp-struct docutils literal notranslate"><span class="pre">arrow::ArrowGlobalOptions</span></code>:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="n">arrow</span><span class="o">::</span><span class="n">GlobalOptions</span><span class="w"> </span><span class="n">options</span><span class="p">;</span>
<span class="n">options</span><span class="p">.</span><span class="n">timezone_db_path</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;path/to/tzdata&quot;</span><span class="p">;</span>
<span class="n">ARROW_RETURN_NOT_OK</span><span class="p">(</span><span class="n">arrow</span><span class="o">::</span><span class="n">Initialize</span><span class="p">(</span><span class="n">options</span><span class="p">));</span>
</pre></div>
</div>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="getting_started.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">Getting Started</p>
</div>
</a>
<a class="right-next"
href="conventions.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Conventions</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#cmake">CMake</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#basic-usage">Basic usage</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#available-variables-and-targets">Available variables and targets</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#other-available-packages">Other available packages</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#id2">pkg-config</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#id3">Basic usage</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#available-packages">Available packages</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#a-note-on-linking">A Note on Linking</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#runtime-dependencies">Runtime Dependencies</a></li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/cpp/build_system.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>