blob: a4722109233e8ecef718b75eba59ce24964e4555 [file] [log] [blame]
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Cmake Build Environment &mdash; OpenPASS Documentation</title>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/tabs.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
<link rel="shortcut icon" href="../../../_static/openPASS.ico"/>
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/tabs.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Building under Windows" href="50_windows.html" />
<link rel="prev" title="Building Prerequisites" href="30_build_prerequisites.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home"> openPASS
<img src="../../../_static/openPASS.png" class="logo" alt="Logo"/>
</a>
<div class="version">
9999.9999.9999
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Installation Guides</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../10_gui_installation_guide.html">GUI Installation Guide</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../20_sim_installation_guide.html">Simulation Installation Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../meta/sphinx.html">Sphinx</a></li>
<li class="toctree-l2"><a class="reference internal" href="10_quickstart.html">Quick Start</a></li>
<li class="toctree-l2"><a class="reference internal" href="20_prerequisites.html">Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="30_build_prerequisites.html">Building Prerequisites</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Cmake Build Environment</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#generator-windows-only">Generator (Windows only)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#cmake-variables">Cmake Variables</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#cmake-prefix-path">CMAKE_PREFIX_PATH</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cmake-install-prefix">CMAKE_INSTALL_PREFIX</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cmake-with-debug-postix">CMAKE_WITH_DEBUG_POSTIX</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cmake-build-type">CMAKE_BUILD_TYPE</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cmake-c-compiler">CMAKE_C_COMPILER</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cmake-cxx-compiler">CMAKE_CXX_COMPILER</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cmake-object-path-max">CMAKE_OBJECT_PATH_MAX</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#openpass-variables">OpenPASS Variables</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#use-ccache">USE_CCACHE</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-simcore">WITH_SIMCORE</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-doc">WITH_DOC</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-api-doc">WITH_API_DOC</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-coverage">WITH_COVERAGE</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-gui">WITH_GUI</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-tests">WITH_TESTS</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-mingw-boost-1-72-fix">WITH_MINGW_BOOST_1_72_FIX</a></li>
<li class="toctree-l4"><a class="reference internal" href="#openpass-adjust-output">OPENPASS_ADJUST_OUTPUT</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-extended-osi">WITH_EXTENDED_OSI</a></li>
<li class="toctree-l4"><a class="reference internal" href="#with-protobuf-arena">WITH_PROTOBUF_ARENA</a></li>
<li class="toctree-l4"><a class="reference internal" href="#install-system-runtime-deps">INSTALL_SYSTEM_RUNTIME_DEPS</a></li>
<li class="toctree-l4"><a class="reference internal" href="#install-extra-runtime-deps">INSTALL_EXTRA_RUNTIME_DEPS</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#make-targets-commands">Make Targets/Commands</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#build-and-install">Build and Install</a></li>
<li class="toctree-l4"><a class="reference internal" href="#executing-tests">Executing Tests</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="50_windows.html">Building under Windows</a></li>
<li class="toctree-l2"><a class="reference internal" href="60_linux.html">Building under Linux</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ides/10_vscode.html">Working with VSCode</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ides/20_qt_creator.html">Working with Qt Creator</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../21_pcm_installation_guide.html">PCM Installation Guide</a></li>
</ul>
<p class="caption"><span class="caption-text">User Guides</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../user_guide/10_gui_user_guide.html">GUI User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../user_guide/20_sim_user_guide.html">Simulation User Guide</a></li>
</ul>
<p class="caption"><span class="caption-text">Advanced topics</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../advanced_topics/10_documentation.html">Documentation Concept</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../advanced_topics/20_simulator_advanced.html">Simulator</a></li>
</ul>
<p class="caption"><span class="caption-text">Other Information</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../license.html">License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">openPASS</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><a href="../../20_sim_installation_guide.html">Simulation Installation Guide</a> &raquo;</li>
<li>Cmake Build Environment</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/installation_guide/sim_installation_guide/installation/40_cmake.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="cmake-build-environment">
<span id="cmake"></span><h1>Cmake Build Environment<a class="headerlink" href="#cmake-build-environment" title="Permalink to this headline"></a></h1>
<p><strong>OpenPASS</strong> uses Cmake as default cross-platform build environment.
This section describes the available variables and options.
If available, recommended options are shown in bold.</p>
<p>The first part of this section approaches Cmake from the <em>command line perspective</em>.
Adjustments for the corresponding IDEs will follow shortly.</p>
<p>The result of a proper Cmake call is a Makefile, which acts as base for the actual build using <code class="docutils literal notranslate"><span class="pre">make</span></code> or, under Windows, <code class="docutils literal notranslate"><span class="pre">mingw32-make</span></code> (c.f. <a class="reference internal" href="50_windows.html#msys2"><span class="std std-ref">MSYS2</span></a>).
Hence, the second part of this section describes best practices around the make commands.</p>
<div class="admonition-see-also admonition">
<p class="admonition-title">See also</p>
<p>Cmake Documentation: <a class="reference external" href="https://cmake.org/cmake/help/latest/index.html">https://cmake.org/cmake/help/latest/index.html</a></p>
</div>
<div class="section" id="generator-windows-only">
<h2>Generator (Windows only)<a class="headerlink" href="#generator-windows-only" title="Permalink to this headline"></a></h2>
<p>To generate MinGW compatible makefiles use <code class="docutils literal notranslate"><span class="pre">-G</span> <span class="pre">&quot;MinGW</span> <span class="pre">Makefiles&quot;</span></code> (c.f. <a class="reference internal" href="50_windows.html#msys2"><span class="std std-ref">MSYS2</span></a>).</p>
</div>
<div class="section" id="cmake-variables">
<h2>Cmake Variables<a class="headerlink" href="#cmake-variables" title="Permalink to this headline"></a></h2>
<div class="section" id="cmake-prefix-path">
<span id="id1"></span><h3>CMAKE_PREFIX_PATH<a class="headerlink" href="#cmake-prefix-path" title="Permalink to this headline"></a></h3>
<p>This command makes the prerequisite available to <strong>openPASS</strong> as semicolon-separated list of directories, specifying installation prefixes to be searched by cmake.
Please refer to <a class="reference internal" href="20_prerequisites.html#prerequisites"><span class="std std-ref">Prerequisites</span></a> for the list of mandatory packages and libraries.
Cmake will issue an error, if one prerequisite is missing.</p>
<p>Generally, cmake recognizes installed libraries (e.g. googletest) on its own.
By setting an explicit <code class="docutils literal notranslate"><span class="pre">CMAKE_PREFIX_PATH</span></code> for a library, it is possible to override the system libraries.
Use this, when an exact library version, or a customized library shall be used instead.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In the following example, non-standard libraries are assumed to be in the folder <code class="docutils literal notranslate"><span class="pre">deps/thirdParty</span></code>.</p>
</div>
<p><strong>Example</strong> (system libraries <strong>not</strong> set):</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-0-0-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-0-0-0" name="0-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-0-0-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-0-0-1" name="0-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-0-0-0" class="sphinx-tabs-panel" id="panel-0-0-0" name="0-0" role="tabpanel" tabindex="0"><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cmake -G <span class="s2">&quot;MinGW Makefiles&quot;</span>
-D <span class="nv">CMAKE_PREFIX_PATH</span><span class="o">=</span><span class="s2">&quot;\</span>
<span class="s2"> /mingw64/bin;\</span>
<span class="s2"> </span><span class="nv">$PWD</span><span class="s2">/../deps/thirdParty/win64/FMILibrary;\</span>
<span class="s2"> </span><span class="nv">$PWD</span><span class="s2">/../deps/thirdParty/win64/osi;\</span>
<span class="s2"> -D &lt;other variables&gt;\</span>
<span class="s2"> ..</span>
</pre></div>
</div>
</div><div aria-labelledby="tab-0-0-1" class="sphinx-tabs-panel" hidden="true" id="panel-0-0-1" name="0-1" role="tabpanel" tabindex="0"><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cmake -D <span class="nv">CMAKE_PREFIX_PATH</span><span class="o">=</span><span class="se">\</span>
<span class="nv">$PWD</span>/../deps/thirdParty/linux64/FMILibrary<span class="se">\;\</span>
<span class="nv">$PWD</span>/../deps/thirdParty/linux64/osi<span class="se">\;\</span>
-D &lt;other variables&gt; <span class="se">\</span>
..
</pre></div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The semicolon <code class="docutils literal notranslate"><span class="pre">;</span></code> needs to be escaped (<code class="docutils literal notranslate"><span class="pre">\;</span></code>) unless the string is quoted.</p>
</div>
</div></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Please also read through ref:<cite>openpass_variables</cite> for further useful hints, e.g. why explicitly setting the MinGW path might be a necessary in some situations.</p>
</div>
</div>
<div class="section" id="cmake-install-prefix">
<h3>CMAKE_INSTALL_PREFIX<a class="headerlink" href="#cmake-install-prefix" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Install directory used by install, when invoking <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">install</span></code></p></li>
<li><p>Recommendation: <code class="docutils literal notranslate"><span class="pre">/OpenPASS/bin/core</span></code> (Linux) | <code class="docutils literal notranslate"><span class="pre">C:/OpenPASS/bin/core</span></code> (Windows)</p></li>
</ul>
</div>
<div class="section" id="cmake-with-debug-postix">
<h3>CMAKE_WITH_DEBUG_POSTIX<a class="headerlink" href="#cmake-with-debug-postix" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Used only in conjunction with <em>Visual Studio Debug Builds</em> (MSVC), as it distinguishes release/debug DLLs by a postfix <code class="docutils literal notranslate"><span class="pre">d</span></code>.</p></li>
<li><p>Options: <strong>OFF</strong> | ON</p></li>
</ul>
</div>
<div class="section" id="cmake-build-type">
<h3>CMAKE_BUILD_TYPE<a class="headerlink" href="#cmake-build-type" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Specifies the build type on single-configuration generators.</p></li>
<li><p>Typical: Release | Debug</p></li>
<li><p>See: <a class="reference external" href="https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html">https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html</a></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>IDEs, as Qt Creator, might set this variable base on the current build type on their own.</p>
</div>
</div>
<div class="section" id="cmake-c-compiler">
<h3>CMAKE_C_COMPILER<a class="headerlink" href="#cmake-c-compiler" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Options: <strong>gcc-10</strong> | gcc-9 | gcc-8</p></li>
<li><p>See: <a class="reference external" href="https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER.html">https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER.html</a></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>IDEs, as Qt Creator, might set this variable via <em>kit</em> settings.</p>
</div>
</div>
<div class="section" id="cmake-cxx-compiler">
<h3>CMAKE_CXX_COMPILER<a class="headerlink" href="#cmake-cxx-compiler" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Options: <strong>g++-10</strong> | g++-9 | g++-8</p></li>
<li><p>See: <a class="reference external" href="https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER.html">https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER.html</a></p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>IDEs, as Qt Creator, might set this variable via <em>kit</em> settings.</p>
</div>
</div>
<div class="section" id="cmake-object-path-max">
<h3>CMAKE_OBJECT_PATH_MAX<a class="headerlink" href="#cmake-object-path-max" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Under windows, errors from too long paths could be prevented by setting this value to 255 (maximum).</p></li>
<li><p>See: <a class="reference external" href="https://cmake.org/cmake/help/latest/variable/CMAKE_OBJECT_PATH_MAX.html">https://cmake.org/cmake/help/latest/variable/CMAKE_OBJECT_PATH_MAX.html</a></p></li>
</ul>
</div>
</div>
<div class="section" id="openpass-variables">
<span id="cmake-openpass-variables"></span><h2>OpenPASS Variables<a class="headerlink" href="#openpass-variables" title="Permalink to this headline"></a></h2>
<div class="section" id="use-ccache">
<h3>USE_CCACHE<a class="headerlink" href="#use-ccache" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Activates ccache (see <a class="reference internal" href="20_prerequisites.html#prerequisites-ccache"><span class="std std-ref">Ccache</span></a>)</p></li>
<li><p>Options: <strong>ON</strong> | OFF</p></li>
</ul>
</div>
<div class="section" id="with-simcore">
<h3>WITH_SIMCORE<a class="headerlink" href="#with-simcore" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Build OSI based scenario simulation, also know as openPASS core (slave).</p></li>
<li><p>Options: OFF | <strong>ON</strong></p></li>
</ul>
</div>
<div class="section" id="with-doc">
<h3>WITH_DOC<a class="headerlink" href="#with-doc" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Build sphinx based documentation</p></li>
<li><p>Options: OFF | <strong>ON</strong></p></li>
</ul>
</div>
<div class="section" id="with-api-doc">
<h3>WITH_API_DOC<a class="headerlink" href="#with-api-doc" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Build sphinx based developer documentation</p></li>
<li><p>Options: <strong>OFF</strong> | ON</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Automatically activates <code class="docutils literal notranslate"><span class="pre">WITH_DOC</span></code> if ON</p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Building the API doc takes pretty long.</p>
</div>
</div>
<div class="section" id="with-coverage">
<h3>WITH_COVERAGE<a class="headerlink" href="#with-coverage" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Add test targets for code coverage analysis (lcov) and HTML report generation (genhtml)</p></li>
<li><p>Options: <strong>OFF</strong> | ON</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">COVERAGE_EXCLUDE</span></code> to remove folders from the analysis</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The generated files are placed next to the test executable.
Each test will be built without optimization, which will increase the testing run-time.</p>
</div>
</div>
<div class="section" id="with-gui">
<h3>WITH_GUI<a class="headerlink" href="#with-gui" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Activates the additional build of the GUI provided with <strong>OpenPASS</strong> (open source).</p></li>
<li><p>Options: <strong>OFF</strong> | ON</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Please refer to <a class="reference internal" href="../../../user_guide/10_gui_user_guide.html#gui-user-guide"><span class="std std-ref">GUI User Guide</span></a> for information on the GUI.</p>
</div>
</div>
<div class="section" id="with-tests">
<h3>WITH_TESTS<a class="headerlink" href="#with-tests" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Build unit tests</p></li>
<li><p>Options: OFF | <strong>ON</strong></p></li>
</ul>
</div>
<div class="section" id="with-mingw-boost-1-72-fix">
<h3>WITH_MINGW_BOOST_1_72_FIX<a class="headerlink" href="#with-mingw-boost-1-72-fix" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Options: <strong>OFF</strong> | ON</p></li>
<li><p>This enables a fix for detection within the MinGW environment, necessary when using the (for compatibility reasons supported) boost version 1.72.</p></li>
<li><p>See: <a class="reference external" href="https://github.com/boostorg/boost_install/issues/33">https://github.com/boostorg/boost_install/issues/33</a>.</p></li>
</ul>
</div>
<div class="section" id="openpass-adjust-output">
<h3>OPENPASS_ADJUST_OUTPUT<a class="headerlink" href="#openpass-adjust-output" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Adjusts if builds are executed in the (Cmake default) folder <code class="docutils literal notranslate"><span class="pre">build</span></code> or directly in the specified install directory.
Latter mimics the former qmake behavior let you skip the call <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">install</span></code>.</p></li>
<li><p>Options: <strong>OFF</strong> | ON</p></li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>When skipping <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">install</span></code>, dependencies are not copied into the output folder, which could cause crashes due to missing or outdated libraries.</p>
</div>
</div>
<div class="section" id="with-extended-osi">
<span id="cmake-protobuf-arenas"></span><h3>WITH_EXTENDED_OSI<a class="headerlink" href="#with-extended-osi" title="Permalink to this headline"></a></h3>
<ul>
<li><p>When set, assumes that extended version of OSI is available, by enabling the <code class="docutils literal notranslate"><span class="pre">USE_EXTENDED_OSI</span></code> preprocessor variable.</p></li>
<li><p>This variable can be used to enable e.g. customized OSI features:</p>
<blockquote>
<div><div class="highlight-c++ notranslate"><div class="highlight"><pre><span></span><span class="cp">#ifdef USE_EXTENDED OSI</span>
<span class="cp">#include</span> <span class="cpf">&quot;osi3/osi_&lt;custom_message&gt;.pb.h&quot;</span><span class="cp"></span>
<span class="cp">#endif</span>
</pre></div>
</div>
</div></blockquote>
</li>
<li><p>Options: <strong>OFF</strong> | ON</p></li>
</ul>
</div>
<div class="section" id="with-protobuf-arena">
<h3>WITH_PROTOBUF_ARENA<a class="headerlink" href="#with-protobuf-arena" title="Permalink to this headline"></a></h3>
<ul>
<li><div class="line-block">
<div class="line"><em>Arena allocation is a C++-only feature that helps you optimize your memory usage and improve performance when working with protocol buffers.</em></div>
<div class="line">(from <a class="reference external" href="https://developers.google.com/protocol-buffers/docs/reference/arenas">https://developers.google.com/protocol-buffers/docs/reference/arenas</a>)</div>
</div>
</li>
<li><p>Options: <strong>ON</strong> | OFF</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This feature is only available, if protobuf related libraries are also compiled with arenas (see <a class="reference internal" href="30_build_prerequisites.html#building-osi"><span class="std std-ref">Building OSI</span></a>).
Fortunately, the implementation falls back to regular allocation if not, which simply results in less performance.</p>
</div>
</div>
<div class="section" id="install-system-runtime-deps">
<h3>INSTALL_SYSTEM_RUNTIME_DEPS<a class="headerlink" href="#install-system-runtime-deps" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Copy detected system runtime dependencies to install directory (i.e. MinGW system libraries)</p></li>
<li><p>Options: ON | <strong>OFF</strong></p></li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Under windows, automatic resolution might fail if other MinGW instances are installed.
As several programs use MinGW under the hood, it is recommended to set the used MinGW path in the CMAKE_PREFIX_PATH explicitly:</p>
<blockquote>
<div><div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">CMAKE_PREFIX_PATH</span> <span class="o">=</span> mingw64/bin<span class="p">;</span><span class="se">\.</span>..
</pre></div>
</div>
</div></blockquote>
</div>
</div>
<div class="section" id="install-extra-runtime-deps">
<h3>INSTALL_EXTRA_RUNTIME_DEPS<a class="headerlink" href="#install-extra-runtime-deps" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>Copy detected third party runtime dependencies to install directory (i.e. required shared libraries found in specified CMAKE_PREFIX_PATH)</p></li>
<li><p>Options: ON | <strong>OFF</strong></p></li>
</ul>
</div>
</div>
<div class="section" id="make-targets-commands">
<h2>Make Targets/Commands<a class="headerlink" href="#make-targets-commands" title="Permalink to this headline"></a></h2>
<p><strong>OpenPASS</strong> defines build targets by major modules or components, such as <code class="docutils literal notranslate"><span class="pre">OpenPassSlave</span></code> or <code class="docutils literal notranslate"><span class="pre">Algorithm_FmuWrapper</span></code>.
After calling Cmake, simply build <strong>openPASS</strong> by calling <code class="docutils literal notranslate"><span class="pre">make</span></code>.</p>
<div class="admonition-see-also admonition">
<p class="admonition-title">See also</p>
<p><a class="reference external" href="https://www.tutorialspoint.com/unix_commands/make.htm">https://www.tutorialspoint.com/unix_commands/make.htm</a></p>
</div>
<div class="section" id="build-and-install">
<h3>Build and Install<a class="headerlink" href="#build-and-install" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">make</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">install</span></code></p>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">&lt;target&gt;</span></code>: Build a single target</p></li>
</ul>
</div>
<div class="section" id="executing-tests">
<h3>Executing Tests<a class="headerlink" href="#executing-tests" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>All tests: <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">test</span> <span class="pre">ARGS=&quot;--output-on-failure</span> <span class="pre">-j3&quot;</span></code></p></li>
<li><p>Single test: <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">test</span> <span class="pre">OpenPassSlave_Tests</span> <span class="pre">ARGS=&quot;--output-on-failure</span> <span class="pre">-j3&quot;</span></code></p></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="50_windows.html" class="btn btn-neutral float-right" title="Building under Windows" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="30_build_prerequisites.html" class="btn btn-neutral float-left" title="Building Prerequisites" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; Copyright 2021 OpenPASS Working Group.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>