2
0

build.html 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. <!DOCTYPE html>
  2. <html class="writer-html5" lang="en" data-content_root="./">
  3. <head>
  4. <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>Building &mdash; bgfx 1.136.9083 documentation</title>
  7. <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
  8. <link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
  9. <script src="_static/jquery.js?v=5d32c60e"></script>
  10. <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
  11. <script src="_static/documentation_options.js?v=f601d78d"></script>
  12. <script src="_static/doctools.js?v=9bcbadda"></script>
  13. <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
  14. <script src="_static/js/theme.js"></script>
  15. <link rel="index" title="Index" href="genindex.html" />
  16. <link rel="search" title="Search" href="search.html" />
  17. <link rel="next" title="Examples" href="examples.html" />
  18. <link rel="prev" title="Overview" href="overview.html" />
  19. </head>
  20. <body class="wy-body-for-nav">
  21. <div class="wy-grid-for-nav">
  22. <nav data-toggle="wy-nav-shift" class="wy-nav-side">
  23. <div class="wy-side-scroll">
  24. <div class="wy-side-nav-search" >
  25. <a href="index.html" class="icon icon-home">
  26. bgfx
  27. </a>
  28. <div role="search">
  29. <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
  30. <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
  31. <input type="hidden" name="check_keywords" value="yes" />
  32. <input type="hidden" name="area" value="default" />
  33. </form>
  34. </div>
  35. </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
  36. <ul class="current">
  37. <li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
  38. <li class="toctree-l1 current"><a class="current reference internal" href="#">Building</a><ul>
  39. <li class="toctree-l2"><a class="reference internal" href="#dependencies-getting-the-source">Dependencies &amp; Getting the source</a></li>
  40. <li class="toctree-l2"><a class="reference internal" href="#quick-start-for-windows">Quick Start for Windows</a></li>
  41. <li class="toctree-l2"><a class="reference internal" href="#prerequisites">Prerequisites</a><ul>
  42. <li class="toctree-l3"><a class="reference internal" href="#android">Android</a></li>
  43. <li class="toctree-l3"><a class="reference internal" href="#linux">Linux</a></li>
  44. <li class="toctree-l3"><a class="reference internal" href="#windows">Windows</a></li>
  45. </ul>
  46. </li>
  47. <li class="toctree-l2"><a class="reference internal" href="#build">Build</a><ul>
  48. <li class="toctree-l3"><a class="reference internal" href="#general-makefile-wrapper">General (Makefile wrapper)</a></li>
  49. <li class="toctree-l3"><a class="reference internal" href="#general-directly-with-genie">General (Directly with GENie)</a></li>
  50. <li class="toctree-l3"><a class="reference internal" href="#id1">Windows</a></li>
  51. <li class="toctree-l3"><a class="reference internal" href="#macos">macOS</a></li>
  52. <li class="toctree-l3"><a class="reference internal" href="#id2">Linux</a></li>
  53. <li class="toctree-l3"><a class="reference internal" href="#winrt-uwp">WinRT / UWP</a></li>
  54. </ul>
  55. </li>
  56. <li class="toctree-l2"><a class="reference internal" href="#amalgamated-build">Amalgamated Build</a></li>
  57. <li class="toctree-l2"><a class="reference internal" href="#tools">Tools</a></li>
  58. <li class="toctree-l2"><a class="reference internal" href="#alternative-build-systems">Alternative build systems</a></li>
  59. <li class="toctree-l2"><a class="reference internal" href="#minimal-example-without-bgfx-s-example-harness">Minimal example without bgfx’s example harness</a></li>
  60. </ul>
  61. </li>
  62. <li class="toctree-l1"><a class="reference internal" href="examples.html">Examples</a></li>
  63. <li class="toctree-l1"><a class="reference internal" href="bgfx.html">API Reference</a></li>
  64. <li class="toctree-l1"><a class="reference internal" href="tools.html">Tools</a></li>
  65. <li class="toctree-l1"><a class="reference internal" href="internals.html">Internals</a></li>
  66. <li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
  67. </ul>
  68. </div>
  69. </div>
  70. </nav>
  71. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
  72. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  73. <a href="index.html">bgfx</a>
  74. </nav>
  75. <div class="wy-nav-content">
  76. <div class="rst-content">
  77. <div role="navigation" aria-label="Page navigation">
  78. <ul class="wy-breadcrumbs">
  79. <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
  80. <li class="breadcrumb-item active">Building</li>
  81. <li class="wy-breadcrumbs-aside">
  82. </li>
  83. </ul>
  84. <hr/>
  85. </div>
  86. <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
  87. <div itemprop="articleBody">
  88. <section id="building">
  89. <h1>Building<a class="headerlink" href="#building" title="Link to this heading"></a></h1>
  90. <section id="dependencies-getting-the-source">
  91. <h2>Dependencies &amp; Getting the source<a class="headerlink" href="#dependencies-getting-the-source" title="Link to this heading"></a></h2>
  92. <blockquote>
  93. <div><ul class="simple">
  94. <li><p><a class="reference external" href="https://github.com/bkaradzic/bx">https://github.com/bkaradzic/bx</a></p></li>
  95. <li><p><a class="reference external" href="https://github.com/bkaradzic/bimg">https://github.com/bkaradzic/bimg</a></p></li>
  96. </ul>
  97. </div></blockquote>
  98. <p>The directories for <cite>bx</cite>, <cite>bimg</cite>, and <cite>bgfx</cite> should all be siblings of each other.
  99. So clone the repositories next to each other:</p>
  100. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">bkaradzic</span><span class="o">/</span><span class="n">bx</span><span class="o">.</span><span class="n">git</span>
  101. <span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">bkaradzic</span><span class="o">/</span><span class="n">bimg</span><span class="o">.</span><span class="n">git</span>
  102. <span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">bkaradzic</span><span class="o">/</span><span class="n">bgfx</span><span class="o">.</span><span class="n">git</span>
  103. </pre></div>
  104. </div>
  105. </section>
  106. <section id="quick-start-for-windows">
  107. <h2>Quick Start for Windows<a class="headerlink" href="#quick-start-for-windows" title="Link to this heading"></a></h2>
  108. <p>These are step for users who use Windows with Visual Studio.</p>
  109. <p>Enter bgfx directory:</p>
  110. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">bgfx</span>
  111. </pre></div>
  112. </div>
  113. <p>Generate Visual Studio 2019 project files:</p>
  114. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">examples</span> <span class="n">vs2022</span>
  115. </pre></div>
  116. </div>
  117. <p>Open bgfx solution in Visual Studio 2019:</p>
  118. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">.</span><span class="n">build</span>\<span class="n">projects</span>\<span class="n">vs2022</span>\<span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
  119. </pre></div>
  120. </div>
  121. <div class="admonition note">
  122. <p class="admonition-title">Note</p>
  123. <p>For more detailed prerequisites and build steps on other platforms see below.</p>
  124. </div>
  125. </section>
  126. <section id="prerequisites">
  127. <h2>Prerequisites<a class="headerlink" href="#prerequisites" title="Link to this heading"></a></h2>
  128. <section id="android">
  129. <h3>Android<a class="headerlink" href="#android" title="Link to this heading"></a></h3>
  130. <p>Download Android NDK (r23 or newer):</p>
  131. <blockquote>
  132. <div><ul class="simple">
  133. <li><p><a class="reference external" href="https://developer.android.com/tools/sdk/ndk/index.html">https://developer.android.com/tools/sdk/ndk/index.html</a></p></li>
  134. </ul>
  135. </div></blockquote>
  136. <p>Set following environment variables:</p>
  137. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">setx</span> <span class="n">ANDROID_NDK_ROOT</span> <span class="o">&lt;</span><span class="n">path</span> <span class="n">to</span> <span class="n">AndroidNDK</span> <span class="n">directory</span><span class="o">&gt;</span>
  138. </pre></div>
  139. </div>
  140. </section>
  141. <section id="linux">
  142. <h3>Linux<a class="headerlink" href="#linux" title="Link to this heading"></a></h3>
  143. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libgl1</span><span class="o">-</span><span class="n">mesa</span><span class="o">-</span><span class="n">dev</span> <span class="n">x11proto</span><span class="o">-</span><span class="n">core</span><span class="o">-</span><span class="n">dev</span> <span class="n">libx11</span><span class="o">-</span><span class="n">dev</span>
  144. </pre></div>
  145. </div>
  146. </section>
  147. <section id="windows">
  148. <h3>Windows<a class="headerlink" href="#windows" title="Link to this heading"></a></h3>
  149. <p>Windows users download GnuWin32 utilities:</p>
  150. <blockquote>
  151. <div><ul class="simple">
  152. <li><p><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/make.htm">http://gnuwin32.sourceforge.net/packages/make.htm</a></p></li>
  153. <li><p><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/coreutils.htm">http://gnuwin32.sourceforge.net/packages/coreutils.htm</a></p></li>
  154. <li><p><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/libiconv.htm">http://gnuwin32.sourceforge.net/packages/libiconv.htm</a></p></li>
  155. <li><p><a class="reference external" href="http://gnuwin32.sourceforge.net/packages/libintl.htm">http://gnuwin32.sourceforge.net/packages/libintl.htm</a></p></li>
  156. </ul>
  157. </div></blockquote>
  158. <div class="admonition note">
  159. <p class="admonition-title">Note</p>
  160. <p><strong>MSYS</strong>, <strong>Cygwin</strong>, etc. shells are not supported!
  161. You must use use <strong>cmd.exe</strong> with provided makefiles.</p>
  162. </div>
  163. </section>
  164. </section>
  165. <section id="build">
  166. <h2>Build<a class="headerlink" href="#build" title="Link to this heading"></a></h2>
  167. <p>bgfx uses <a class="reference external" href="https://github.com/bkaradzic/genie#genie---project-generator-tool">GENie - Project generator tool</a>
  168. to generate project files for various platforms. Binaries of GENie for Linux, macOS, and Windows are included in
  169. the bx repository. GENie can generate a useful list of options relevant to the project using the
  170. <code class="docutils literal notranslate"><span class="pre">--help</span></code> flag. Most platform-specific examples below do not explicitly use the <code class="docutils literal notranslate"><span class="pre">genie</span></code> executable, but a convenience
  171. makefile instead. For more control, you can directly use <code class="docutils literal notranslate"><span class="pre">genie</span></code> to generate the project files.</p>
  172. <section id="general-makefile-wrapper">
  173. <h3>General (Makefile wrapper)<a class="headerlink" href="#general-makefile-wrapper" title="Link to this heading"></a></h3>
  174. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="n">bgfx</span>
  175. <span class="n">make</span>
  176. </pre></div>
  177. </div>
  178. <p>After calling <code class="docutils literal notranslate"><span class="pre">make</span></code>, some directories in <code class="docutils literal notranslate"><span class="pre">.build/projects/\*</span></code> will be generated.
  179. All intermediate files, libraries and executables generated by the compiler will be inside this
  180. <code class="docutils literal notranslate"><span class="pre">.build</span></code> directory structure. Deleting <code class="docutils literal notranslate"><span class="pre">.build</span></code> directory at any time is safe.</p>
  181. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="o">&lt;</span><span class="n">configuration</span><span class="o">&gt;</span>
  182. </pre></div>
  183. </div>
  184. <p>Configuration is <code class="docutils literal notranslate"><span class="pre">&lt;platform&gt;-&lt;debug/release&gt;[32/64]</span></code>. For example:</p>
  185. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">linux</span><span class="o">-</span><span class="n">release64</span><span class="p">,</span> <span class="n">wasm</span><span class="o">-</span><span class="n">debug</span><span class="p">,</span> <span class="n">wasm</span><span class="o">-</span><span class="n">release</span><span class="p">,</span> <span class="n">osx</span><span class="o">-</span><span class="n">debug</span><span class="p">,</span> <span class="n">osx</span><span class="o">-</span><span class="n">release</span><span class="p">,</span> <span class="n">android</span><span class="o">-</span><span class="n">arm64</span><span class="o">-</span><span class="n">release</span><span class="p">,</span> <span class="n">etc</span><span class="o">.</span>
  186. </pre></div>
  187. </div>
  188. </section>
  189. <section id="general-directly-with-genie">
  190. <h3>General (Directly with GENie)<a class="headerlink" href="#general-directly-with-genie" title="Link to this heading"></a></h3>
  191. <p>Inspect the available options by invoking GENie with the <code class="docutils literal notranslate"><span class="pre">--help</span></code> option (where <code class="docutils literal notranslate"><span class="pre">&lt;platform&gt;</span></code> is <code class="docutils literal notranslate"><span class="pre">linux</span></code>, <code class="docutils literal notranslate"><span class="pre">windows</span></code>, or <code class="docutils literal notranslate"><span class="pre">darwin</span></code>):</p>
  192. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="n">bx</span><span class="o">/</span><span class="n">tools</span><span class="o">/</span><span class="nb">bin</span><span class="o">/&lt;</span><span class="n">platform</span><span class="o">&gt;/</span><span class="n">genie</span> <span class="o">--</span><span class="n">help</span>
  193. </pre></div>
  194. </div>
  195. <p>Select the options you want, such as:</p>
  196. <blockquote>
  197. <div><ul class="simple">
  198. <li><p><code class="docutils literal notranslate"><span class="pre">--with-tools</span></code></p></li>
  199. <li><p><code class="docutils literal notranslate"><span class="pre">--with-amalgamated</span></code> (see below)</p></li>
  200. <li><p><code class="docutils literal notranslate"><span class="pre">--with-shared-lib</span></code></p></li>
  201. <li><p><code class="docutils literal notranslate"><span class="pre">--with-profiler</span></code> (see <a class="reference external" href="https://bkaradzic.github.io/bgfx/bgfx.html#_CPPv4N4bgfx9CallbackIE">https://bkaradzic.github.io/bgfx/bgfx.html#_CPPv4N4bgfx9CallbackIE</a>)</p></li>
  202. <li><p><code class="docutils literal notranslate"><span class="pre">--with-examples</span></code> (see <a class="reference external" href="https://bkaradzic.github.io/bgfx/examples.html">https://bkaradzic.github.io/bgfx/examples.html</a>)</p></li>
  203. <li><p><code class="docutils literal notranslate"><span class="pre">--with-sdl</span></code> to use SDL2 for the examples.</p></li>
  204. <li><p><code class="docutils literal notranslate"><span class="pre">--with-glfw</span></code> to use GLFW3 for the examples.</p></li>
  205. </ul>
  206. </div></blockquote>
  207. <p>There are also many platform-specific options.</p>
  208. <div class="admonition note">
  209. <p class="admonition-title">Note</p>
  210. <p>If you wish to use the OpenGL backend, specifying a minimum API version is possible through setting
  211. the <code class="docutils literal notranslate"><span class="pre">BGFX_CONFIG</span></code> environment variable when running <code class="docutils literal notranslate"><span class="pre">genie</span></code>. For example:</p>
  212. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Unix:</span>
  213. <span class="n">export</span> <span class="n">BGFX_CONFIG</span><span class="o">=</span><span class="n">RENDERER_OPENGL_MIN_VERSION</span><span class="o">=</span><span class="mi">40</span>
  214. <span class="c1"># Windows:</span>
  215. <span class="nb">set</span> <span class="n">BGFX_CONFIG</span><span class="o">=</span><span class="n">RENDERER_OPENGL_MIN_VERSION</span><span class="o">=</span><span class="mi">40</span>
  216. <span class="o">../</span><span class="n">bx</span><span class="o">/</span><span class="n">tools</span><span class="o">/</span><span class="nb">bin</span><span class="o">/&lt;</span><span class="n">platform</span><span class="o">&gt;/</span><span class="n">genie</span> <span class="o">&lt;...</span> <span class="n">your</span> <span class="n">options</span> <span class="o">...&gt;</span>
  217. </pre></div>
  218. </div>
  219. <p>The same can be done for OpenGL ES.</p>
  220. </div>
  221. <p>Then generate your project files with the options.
  222. Your project folder is in <code class="docutils literal notranslate"><span class="pre">.build/projects/</span></code>.
  223. For more help on specific platforms, see below and read the <code class="docutils literal notranslate"><span class="pre">makefile</span></code> in the bgfx repository) for examples on how to use GENie.</p>
  224. <p>For gmake projects, specify compile using:</p>
  225. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">config</span><span class="o">=&lt;</span><span class="n">config</span><span class="o">&gt;</span> <span class="o">-</span><span class="n">C</span> <span class="o">.</span><span class="n">build</span><span class="o">/</span><span class="n">projects</span><span class="o">/&lt;</span><span class="n">platform</span><span class="o">&gt;-</span><span class="n">gmake</span>
  226. </pre></div>
  227. </div>
  228. <p>Where <code class="docutils literal notranslate"><span class="pre">&lt;config&gt;</span></code> is something like <code class="docutils literal notranslate"><span class="pre">release64</span></code>, <code class="docutils literal notranslate"><span class="pre">debug64</span></code> (or equivalent 32 bit), and
  229. <code class="docutils literal notranslate"><span class="pre">&lt;platform&gt;</span></code> is the platform you chose.</p>
  230. </section>
  231. <section id="id1">
  232. <h3>Windows<a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
  233. <p>Visual Studio 2019 command line:</p>
  234. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">vs2022</span><span class="o">-</span><span class="n">release64</span>
  235. </pre></div>
  236. </div>
  237. <p>Visual Studio 2019 IDE:</p>
  238. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">.</span><span class="n">build</span><span class="o">/</span><span class="n">projects</span><span class="o">/</span><span class="n">vs2022</span><span class="o">/</span><span class="n">bgfx</span><span class="o">.</span><span class="n">sln</span>
  239. </pre></div>
  240. </div>
  241. </section>
  242. <section id="macos">
  243. <h3>macOS<a class="headerlink" href="#macos" title="Link to this heading"></a></h3>
  244. <p>There are two options when working on macOS: Xcode command-line builds, or within the XCode graphical development environment.</p>
  245. <p>For the Xcode command line:</p>
  246. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">osx</span><span class="o">-</span><span class="n">release</span>
  247. <span class="n">cd</span> <span class="n">examples</span><span class="o">/</span><span class="n">runtime</span>
  248. <span class="o">../../.</span><span class="n">build</span><span class="o">/</span><span class="n">osx64_clang</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">examples</span><span class="o">.</span><span class="n">app</span><span class="o">/</span><span class="n">Contents</span><span class="o">/</span><span class="n">MacOS</span><span class="o">/</span><span class="n">examplesRelease</span>
  249. </pre></div>
  250. </div>
  251. <p>Or for Xcode IDE:</p>
  252. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">../</span><span class="n">bx</span><span class="o">/</span><span class="n">tools</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">darwin</span><span class="o">/</span><span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">combined</span><span class="o">-</span><span class="n">examples</span> <span class="o">--</span><span class="n">xcode</span><span class="o">=</span><span class="n">osx</span> <span class="n">xcode9</span>
  253. <span class="nb">open</span> <span class="o">.</span><span class="n">build</span><span class="o">/</span><span class="n">projects</span><span class="o">/</span><span class="n">xcode9</span><span class="o">-</span><span class="n">osx</span><span class="o">/</span><span class="n">bgfx</span><span class="o">.</span><span class="n">xcworkspace</span>
  254. </pre></div>
  255. </div>
  256. <p>Due to the <a class="reference external" href="https://github.com/bkaradzic/genie/blob/master/docs/scripting-reference.md#debugdirpath">inability</a>
  257. to set working directory for an Xcode project from <a class="reference external" href="https://github.com/bkaradzic/genie#genie---project-generator-tool">GENie</a>
  258. configuration file, it has to be set manually for each example project:</p>
  259. <ol class="arabic simple">
  260. <li><p>Open <em>“Edit scheme…”</em> dialog for a given project.</p></li>
  261. <li><p>Select <em>“Run”</em> settings.</p></li>
  262. <li><p>Check <em>“Use custom working directory”</em> and enter following path:
  263. <code class="docutils literal notranslate"><span class="pre">${PROJECT_DIR}/../../../examples/runtime</span></code>.</p></li>
  264. </ol>
  265. </section>
  266. <section id="id2">
  267. <h3>Linux<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
  268. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">make</span> <span class="n">linux</span><span class="o">-</span><span class="n">release64</span>
  269. </pre></div>
  270. </div>
  271. <p>For more options, see <a class="reference external" href="#general-directly-with-genie">General (directly with GENie)</a>.</p>
  272. </section>
  273. <section id="winrt-uwp">
  274. <h3>WinRT / UWP<a class="headerlink" href="#winrt-uwp" title="Link to this heading"></a></h3>
  275. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="n">vs</span><span class="o">=</span><span class="n">winstore100</span> <span class="n">vs2022</span>
  276. </pre></div>
  277. </div>
  278. <p>For more options, see <a class="reference external" href="#general-directly-with-genie">General (directly with GENie)</a>.
  279. Build the resulting solution and deploy to device.</p>
  280. <div class="admonition note">
  281. <p class="admonition-title">Note</p>
  282. <p>Shaders will need to be compiled with the appropriate target profile for your platform.</p>
  283. </div>
  284. </section>
  285. </section>
  286. <section id="amalgamated-build">
  287. <h2>Amalgamated Build<a class="headerlink" href="#amalgamated-build" title="Link to this heading"></a></h2>
  288. <p>For ease of integration with other build systems, the bgfx library can be built
  289. with a single .cpp file. It’s only necessary to build
  290. <a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.cpp">src/amalgamated.cpp</a>
  291. (for macOS/iOS/iPadOS/tvOS use
  292. <a class="reference external" href="https://github.com/bkaradzic/bgfx/blob/master/src/amalgamated.mm">src/amalgamated.mm</a>
  293. instead) inside a different build system.</p>
  294. </section>
  295. <section id="tools">
  296. <h2>Tools<a class="headerlink" href="#tools" title="Link to this heading"></a></h2>
  297. <p>To build bgfx project files for tools, use <code class="docutils literal notranslate"><span class="pre">--with-tools</span></code> option:</p>
  298. <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">..</span>\<span class="n">bx</span>\<span class="n">tools</span>\<span class="nb">bin</span>\<span class="n">windows</span>\<span class="n">genie</span> <span class="o">--</span><span class="k">with</span><span class="o">-</span><span class="n">tools</span> <span class="n">vs2022</span>
  299. </pre></div>
  300. </div>
  301. </section>
  302. <section id="alternative-build-systems">
  303. <h2>Alternative build systems<a class="headerlink" href="#alternative-build-systems" title="Link to this heading"></a></h2>
  304. <p><strong>CMake</strong></p>
  305. <blockquote>
  306. <div><ul class="simple">
  307. <li><p><a class="reference external" href="https://github.com/bkaradzic/bgfx.cmake">https://github.com/bkaradzic/bgfx.cmake</a></p></li>
  308. <li><p><a class="reference external" href="https://github.com/JoshuaBrookover/bgfx.cmake#bgfxcmake">https://github.com/JoshuaBrookover/bgfx.cmake#bgfxcmake</a></p></li>
  309. <li><p><a class="reference external" href="https://github.com/pr0g/sdl-bgfx-imgui-starter#sdl-bgfx-imgui-starter">https://github.com/pr0g/sdl-bgfx-imgui-starter#sdl-bgfx-imgui-starter</a></p></li>
  310. <li><p><a class="reference external" href="https://github.com/yuki-koyama/hello-bgfx">https://github.com/yuki-koyama/hello-bgfx</a></p></li>
  311. <li><p><a class="reference external" href="https://github.com/ataulien/bgfx-cmake">https://github.com/ataulien/bgfx-cmake</a></p></li>
  312. </ul>
  313. </div></blockquote>
  314. <p><strong>fips</strong> is a high-level build system wrapper written in Python for C/C++ projects.
  315. <a class="reference external" href="https://github.com/floooh/fips#fips">https://github.com/floooh/fips#fips</a></p>
  316. <p><strong>Conan</strong> package
  317. <a class="reference external" href="https://github.com/firefalcom/bgfx-conan">https://github.com/firefalcom/bgfx-conan</a></p>
  318. </section>
  319. <section id="minimal-example-without-bgfx-s-example-harness">
  320. <h2>Minimal example without bgfx’s example harness<a class="headerlink" href="#minimal-example-without-bgfx-s-example-harness" title="Link to this heading"></a></h2>
  321. <p>This project demonstrates minimal amount of code needed to integrate bgfx with GLFW, but without
  322. any of existing bgfx example harness. It also demonstrates how to build bgfx with alternative build
  323. system.</p>
  324. <p><a class="reference external" href="https://github.com/jpcy/bgfx-minimal-example">https://github.com/jpcy/bgfx-minimal-example</a></p>
  325. </section>
  326. </section>
  327. </div>
  328. </div>
  329. <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
  330. <a href="overview.html" class="btn btn-neutral float-left" title="Overview" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
  331. <a href="examples.html" class="btn btn-neutral float-right" title="Examples" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
  332. </div>
  333. <hr/>
  334. <div role="contentinfo">
  335. <p>&#169; Copyright 2010-2025, Branimir Karadžić.</p>
  336. </div>
  337. </footer>
  338. </div>
  339. </div>
  340. </section>
  341. </div>
  342. <script>
  343. jQuery(function () {
  344. SphinxRtdTheme.Navigation.enable(true);
  345. });
  346. </script>
  347. </body>
  348. </html>