blob: 8d4a3a4d40cba2a34375de5b58d13e0d27d2fc26 [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>Prerequisites &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 Prerequisites" href="30_build_prerequisites.html" />
<link rel="prev" title="Quick Start" href="10_quickstart.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 current"><a class="current reference internal" href="#">Prerequisites</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#gnu-compiler-collection-gcc">GNU Compiler Collection (gcc)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#gnu-debugger-gdb">GNU Debugger (gdb)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#cmake">CMake</a></li>
<li class="toctree-l3"><a class="reference internal" href="#ccache">Ccache</a></li>
<li class="toctree-l3"><a class="reference internal" href="#doxygen">Doxygen</a></li>
<li class="toctree-l3"><a class="reference internal" href="#qt-framework">Qt Framework</a></li>
<li class="toctree-l3"><a class="reference internal" href="#boost-c-libraries">Boost C++ Libraries</a></li>
<li class="toctree-l3"><a class="reference internal" href="#googletest">googletest</a></li>
<li class="toctree-l3"><a class="reference internal" href="#open-simulation-interface-osi">Open Simulation Interface (OSI)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#protocol-buffers-protobuf">Protocol Buffers (protobuf)</a></li>
<li class="toctree-l3"><a class="reference internal" href="#modelon-fmi-library-fmil">Modelon FMI Library (FMIL)</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="30_build_prerequisites.html">Building Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="40_cmake.html">Cmake Build Environment</a></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>Prerequisites</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/installation_guide/sim_installation_guide/installation/20_prerequisites.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="prerequisites">
<span id="id1"></span><h1>Prerequisites<a class="headerlink" href="#prerequisites" title="Permalink to this headline"></a></h1>
<p>This section gives detailed information about the prerequisite and tested version.
In short:</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 (MSYS2)</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 (Debian Bullseye)</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>pacman -S mingw-w64-x86_64-boost <span class="c1">#1.75.0-2</span>
pacman -S mingw-w64-x86_64-ccache <span class="c1">#3.7.9-1</span>
pacman -S mingw-w64-x86_64-cmake <span class="c1">#3.19.2-1</span>
pacman -S mingw-w64-x86_64-doxygen <span class="c1">#1.8.20-1</span>
pacman -S mingw-w64-x86_64-gcc <span class="c1">#10.2.0-6</span>
pacman -S mingw-w64-x86_64-gdb <span class="c1">#10.1-2</span>
pacman -S mingw-w64-x86_64-graphviz <span class="c1">#2.44.1-3</span>
pacman -S mingw-w64-x86_64-gtest <span class="c1">#1.10.0-1</span>
pacman -S mingw-w64-x86_64-make <span class="c1">#4.3-1</span>
pacman -S mingw-w64-x86_64-protobuf <span class="c1">#3.12.4-1</span>
pacman -S mingw-w64-x86_64-qt5 <span class="c1">#5.15.2-5</span>
</pre></div>
</div>
<p>Details: <a class="reference internal" href="50_windows.html#building-under-windows"><span class="std std-ref">Building under Windows</span></a></p>
</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>apt install ccache
apt install cmake
apt install doxygen
apt install googletest
apt install gcc
apt install g++
apt install graphviz
apt install libprotobuf-dev
apt install protobuf-compiler <span class="c1"># when building osi</span>
apt install qt5-default
</pre></div>
</div>
<p>Details: <a class="reference internal" href="60_linux.html#building-under-linux"><span class="std std-ref">Building under Linux</span></a></p>
</div></div>
<div class="section" id="gnu-compiler-collection-gcc">
<h2>GNU Compiler Collection (gcc)<a class="headerlink" href="#gnu-compiler-collection-gcc" title="Permalink to this headline"></a></h2>
<p><strong>Version (latest tested):</strong> 10.2.3</p>
<p><strong>OpenPASS</strong> is developed on Linux and Windows (64-Bit) in <a class="reference external" href="https://isocpp.org/">C++17</a> using the GNU Compiler Collection (<a class="reference external" href="https://gcc.gnu.org/">gcc</a>).</p>
<div class="admonition-useful-hints admonition">
<p class="admonition-title">Useful hints</p>
<ul>
<li><div class="line-block">
<div class="line"><strong>openPASS</strong> has been developed using gcc 7.x, 8.x, 9.x, and more recently gcc 10.x.</div>
<div class="line">There are no known issues regarding the different versions.</div>
</div>
</li>
<li><p>Since no compiler specific features are used, the source should also compile with <a class="reference external" href="https://clang.llvm.org/">clang</a>.</p></li>
<li><p>Generally, there is support for <a class="reference external" href="https://docs.microsoft.com/en-us/cpp/build/reference/c-cpp-building-reference">MSVC</a> , but currently not actively maintained by the <strong>openPASS</strong> Working Group.</p></li>
</ul>
</div>
</div>
<div class="section" id="gnu-debugger-gdb">
<h2>GNU Debugger (gdb)<a class="headerlink" href="#gnu-debugger-gdb" title="Permalink to this headline"></a></h2>
<p><strong>Version (latest tested):</strong> 9.2</p>
<p>Debugging tools for gcc: <a class="reference external" href="https://www.gnu.org/savannah-checkouts/gnu/gdb/index.html">https://www.gnu.org/savannah-checkouts/gnu/gdb/index.html</a></p>
</div>
<div class="section" id="cmake">
<h2>CMake<a class="headerlink" href="#cmake" title="Permalink to this headline"></a></h2>
<p><strong>Version (latest tested):</strong> 3.18.4</p>
<p><strong>OpenPASS</strong> uses <a class="reference external" href="https://cmake.org/">CMake</a> for building and testing.
For details on the provided options, see <a class="reference internal" href="40_cmake.html#cmake"><span class="std std-ref">Cmake Build Environment</span></a>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The former support for <code class="docutils literal notranslate"><span class="pre">qmake</span></code> is expiring and not documented anymore.</p>
</div>
</div>
<div class="section" id="ccache">
<span id="prerequisites-ccache"></span><h2>Ccache<a class="headerlink" href="#ccache" title="Permalink to this headline"></a></h2>
<p><strong>Version (latest tested):</strong> 3.7.11</p>
<p><strong>OpenPASS</strong> supports the compiler cache <a class="reference external" href="https://ccache.dev/">Ccache</a> for faster recompilation.
Use only, if you need to recompile regularly.</p>
<div class="admonition-useful-hints admonition">
<p class="admonition-title">Useful hints</p>
<ul class="simple">
<li><p>The first compilation is definilty slower (e.g. by 30%), as the cache needs to be built.</p></li>
<li><p>If used regularily, increasing the cache size is recommended, e.g.: <code class="docutils literal notranslate"><span class="pre">ccache</span> <span class="pre">-M</span> <span class="pre">20G</span></code></p></li>
</ul>
</div>
</div>
<div class="section" id="doxygen">
<h2>Doxygen<a class="headerlink" href="#doxygen" title="Permalink to this headline"></a></h2>
<p><strong>Version (latest tested):</strong> 1.8.20</p>
<p>Documentation is created using <a class="reference external" href="https://www.doxygen.nl/index.html">Doxygen</a>.</p>
<div class="admonition-useful-hints admonition">
<p class="admonition-title">Useful hints</p>
<ul class="simple">
<li><p>Doxygen introduced support for Markdown with 1.8, which is still in use.
Don’t use older versions.</p></li>
</ul>
</div>
</div>
<div class="section" id="qt-framework">
<h2>Qt Framework<a class="headerlink" href="#qt-framework" title="Permalink to this headline"></a></h2>
<p><strong>Version (officially supported):</strong> 5.12.3</p>
<p><strong>OpenPASS</strong> uses some features from the <a class="reference external" href="https://www.qt.io/">Qt</a> framework.
While the GUI of <strong>openPASS</strong> (Open Source) heavily relies on it, the simulation core tries to stick to the C++ standard framework as far as possible.</p>
<div class="admonition-note-on-versions admonition">
<p class="admonition-title">Note on Versions</p>
<div class="line-block">
<div class="line">Versions starting from 5.4 should generally work, but are not officially supported anymore/yet.</div>
<div class="line">Version 5.15.1 has been reported to work well.</div>
</div>
</div>
</div>
<div class="section" id="boost-c-libraries">
<h2>Boost C++ Libraries<a class="headerlink" href="#boost-c-libraries" title="Permalink to this headline"></a></h2>
<p><strong>Version (officially supported):</strong> 1.72.0</p>
<p>Especially for geometrical calculations, <strong>openPASS</strong> uses parts of the <a class="reference external" href="https://www.boost.org/">Boost C++ Libraries</a>.</p>
<div class="admonition-note-on-versions admonition">
<p class="admonition-title">Note on Versions</p>
<p>More recent versions should integrate without issues, but 1.74.0 already raise warnings for some deprecated headers.</p>
</div>
</div>
<div class="section" id="googletest">
<h2>googletest<a class="headerlink" href="#googletest" title="Permalink to this headline"></a></h2>
<p><strong>Version (officially supported)</strong> 1.10.0</p>
<p>Tests are written in <a class="reference external" href="https://github.com/google/googletest">googletest</a> and <strong>OpenPASS</strong> makes use of the included <em>googletest</em> (gtest) C++ testing framework, as well as the included mocking framework <em>googlemock</em> (gmock).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The lastest major release brought several API changes, which made some code fixes necessary.
Use newer versions with precaution.</p>
</div>
</div>
<div class="section" id="open-simulation-interface-osi">
<span id="prerequisites-osi"></span><h2>Open Simulation Interface (OSI)<a class="headerlink" href="#open-simulation-interface-osi" title="Permalink to this headline"></a></h2>
<p><strong>Version (officially supported):</strong> 3.2.0</p>
<p>The internal world representation uses the <a class="reference external" href="https://github.com/OpenSimulationInterface">Open Simulation Interface</a> (<a class="reference internal" href="../../../glossary.html#term-OSI"><span class="xref std std-term">OSI</span></a>) as part of its ground truth (backend storage) and exchange format.</p>
<div class="figure align-center" id="id7">
<a class="reference internal image-reference" href="../../../_images/osi_in_openpass.png"><img alt="OSI in |op|" src="../../../_images/osi_in_openpass.png" style="width: 514.1999999999999px; height: 131.4px;" /></a>
<p class="caption"><span class="caption-text">Interaction between World and consumers of OSI messages.</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
</div>
<p>Thereby, OSI provides data structures for representation of various objects in traffic simulation environments.
Note that OSI is primarily developed in a sensor centric view, such as lane markings and object boundaries.
Beyond that, <strong>openPASS</strong> holds data for non-sensor centric data, such as metainfo on lanes and roads.</p>
<p>As shown, OSI itself depends on <a class="reference internal" href="#prerequisites-protobuf"><span class="std std-ref">Protocol Buffers (protobuf)</span></a>.
If not already installed, the library and headers have to be built prior to OSI.</p>
<div class="admonition-note-on-versions admonition">
<p class="admonition-title">Note on Versions</p>
<p><strong>OpenPASS</strong> supports <strong>integration of custom made or experimental versions</strong> of OSI (see <a class="reference internal" href="30_build_prerequisites.html#building-osi"><span class="std std-ref">Building OSI</span></a>).
For example, <cite>Algorithm_FmuWrapper</cite> and the wrapped <cite>OSMP</cite> FMUs use the proposed OSI messages <cite>TrafficUpdate</cite> and <cite>TrafficCommand</cite>, not yet defined in OSI 3.2.0.</p>
</div>
</div>
<div class="section" id="protocol-buffers-protobuf">
<span id="prerequisites-protobuf"></span><h2>Protocol Buffers (protobuf)<a class="headerlink" href="#protocol-buffers-protobuf" title="Permalink to this headline"></a></h2>
<p><strong>Supported Version (officially supported):</strong> 3.12.2</p>
<p><a class="reference internal" href="#prerequisites-osi"><span class="std std-ref">Open Simulation Interface (OSI)</span></a> uses <a class="reference external" href="https://developers.google.com/protocol-buffers">Protocol Buffers</a> for describing and serialization of its datastructures.</p>
<div class="admonition-note-on-versions admonition">
<p class="admonition-title">Note on Versions</p>
<ul class="simple">
<li><p>So far, no version limitations known (including 2.x).</p></li>
<li><p><strong>OpenPASS</strong> lets you integrate your own protobuf libraries if necessary (see <a class="reference internal" href="30_build_prerequisites.html#building-protobuf"><span class="std std-ref">Building Protobuf</span></a>).</p></li>
</ul>
</div>
</div>
<div class="section" id="modelon-fmi-library-fmil">
<h2>Modelon FMI Library (FMIL)<a class="headerlink" href="#modelon-fmi-library-fmil" title="Permalink to this headline"></a></h2>
<p><strong>Supported Version:</strong> 2.0.3</p>
<p>For integration of Functional Mock-up Units (FMUs) the <cite>Algorithm_FmuWrapper</cite> uses the <a class="reference external" href="https://github.com/modelon-community/fmi-library">Modelon FMI Library</a>.
As there is no binary available, FMIL needs to be build from scratch before <strong>openPASS</strong> can be compiled (see <a class="reference internal" href="30_build_prerequisites.html#building-fmil"><span class="std std-ref">Building FMIL</span></a>).</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="30_build_prerequisites.html" class="btn btn-neutral float-right" title="Building Prerequisites" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="10_quickstart.html" class="btn btn-neutral float-left" title="Quick Start" 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>