blob: 17775b9af22c30871f4c505839d47111d829f698 [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>External Dependencies &mdash; OpenPASS Documentation</title>
<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/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../_static/tabs.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 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/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Glossary" href="20_glossary.html" />
<link rel="prev" title="Documentation Concept" href="../developer_information/20_documentation.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="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Installation Guide</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../installation_guide/10_getting_started.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation_guide/20_install_prerequisites.html">Installing Prerequisites</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation_guide/30_install_openpass.html">Installing OpenPASS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation_guide/50_further_guidance.html">Further Guidance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installation_guide/60_conan.html">Building with Conan</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">User Guides</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/10_overview.html">Overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/20_tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/30_gui_plugins.html">GUI Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/40_configs_in_depth.html">Configs in Depth</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/50_outputs_in_depth.html">Outputs in Depth</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user_guide/60_scenario_simulation.html">Simulator</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Advanced topics</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../advanced_topics/20_simulator_advanced.html">Simulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../advanced_topics/30_testing.html">EndToEnd Test Framework</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Developer Information</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../developer_information/10_ide_support.html">IDE Support</a></li>
<li class="toctree-l1"><a class="reference internal" href="../developer_information/20_documentation.html">Documentation Concept</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Other Information</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">External Dependencies</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#information-on-binary-packages">Information on Binary Packages</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>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#information-on-source-packages">Information on Source Packages</a><ul>
<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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="20_glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="30_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="Mobile navigation menu" >
<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="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home"></a> &raquo;</li>
<li>External Dependencies</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/other_information/10_external_dependencies.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="external-dependencies">
<h1>External Dependencies<a class="headerlink" href="#external-dependencies" title="Permalink to this headline"></a></h1>
<p><strong>OpenPASS</strong> depends on a number of external dependencies. Installation of those dependencies is described in <a class="reference internal" href="../installation_guide/20_install_prerequisites.html#prerequisites"><span class="std std-ref">Installing Prerequisites</span></a>.</p>
<p>The third party software dependency of <strong>openPASS</strong> can be divided into:</p>
<ul class="simple">
<li><p><strong>Build environment</strong>, which manages third party software and is used to compile and install <strong>openPASS</strong></p></li>
<li><p><strong>Binary packages</strong>, which can be easily installed via a package manager of the respective build environment</p></li>
<li><p><strong>Source packages</strong>, which need to be built from source code</p></li>
</ul>
<p>This section gives an overview of the dependencies and how they are used.</p>
<div class="section" id="information-on-binary-packages">
<h2>Information on Binary Packages<a class="headerlink" href="#information-on-binary-packages" title="Permalink to this headline"></a></h2>
<div class="section" id="gnu-compiler-collection-gcc">
<h3>GNU Compiler Collection (gcc)<a class="headerlink" href="#gnu-compiler-collection-gcc" title="Permalink to this headline"></a></h3>
<p>Version (latest tested): 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.
| 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">
<h3>GNU Debugger (gdb)<a class="headerlink" href="#gnu-debugger-gdb" title="Permalink to this headline"></a></h3>
<p>Version (latest tested): 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">
<h3>CMake<a class="headerlink" href="#cmake" title="Permalink to this headline"></a></h3>
<p>Version (latest tested): 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="../installation_guide/further_guidance/10_cmake.html#cmake"><span class="std std-ref">CMake Variables and Options</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><h3>Ccache<a class="headerlink" href="#ccache" title="Permalink to this headline"></a></h3>
<p>Version (latest tested): 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">
<h3>Doxygen<a class="headerlink" href="#doxygen" title="Permalink to this headline"></a></h3>
<p>Version (latest tested): 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><dl class="simple">
<dt>Doxygen introduced support for Markdown with 1.8, which is still in use.</dt><dd><p>Don’t use older versions.</p>
</dd>
</dl>
</li>
</ul>
</div>
</div>
<div class="section" id="qt-framework">
<h3>Qt Framework<a class="headerlink" href="#qt-framework" title="Permalink to this headline"></a></h3>
<p>Version (officially supported): 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 simulator 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">
<h3>Boost C++ Libraries<a class="headerlink" href="#boost-c-libraries" title="Permalink to this headline"></a></h3>
<p>Version (officially supported): 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">
<h3>googletest<a class="headerlink" href="#googletest" title="Permalink to this headline"></a></h3>
<p>Version (officially supported): 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>
<div class="section" id="information-on-source-packages">
<h2>Information on Source Packages<a class="headerlink" href="#information-on-source-packages" title="Permalink to this headline"></a></h2>
<p>The second and last set of dependencies we need to dissolve are based on source packages.
Since installing such source packages is not easy, we have dedicated a separate chapter on this topic.
See <span class="xref std std-ref">Building prerequisites</span> for a step-by-step instruction on how to download, build and install needed source packages.</p>
<p>Details on source packages:</p>
<div class="section" id="open-simulation-interface-osi">
<span id="prerequisites-osi"></span><h3>Open Simulation Interface (OSI)<a class="headerlink" href="#open-simulation-interface-osi" title="Permalink to this headline"></a></h3>
<p>Version (officially supported): 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="20_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="id6">
<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="#id6" 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="../installation_guide/20_install_prerequisites.html#building-osi"><span class="std std-ref">Build and Install 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><h3>Protocol Buffers (protobuf)<a class="headerlink" href="#protocol-buffers-protobuf" title="Permalink to this headline"></a></h3>
<p>Supported Version (officially supported): 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="../installation_guide/further_guidance/40_custom_proto.html#building-protobuf"><span class="std std-ref">Custom Protobuf Build</span></a>).</p></li>
</ul>
</div>
</div>
<div class="section" id="modelon-fmi-library-fmil">
<h3>Modelon FMI Library (FMIL)<a class="headerlink" href="#modelon-fmi-library-fmil" title="Permalink to this headline"></a></h3>
<p>Supported Version: 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="../installation_guide/20_install_prerequisites.html#building-fmil"><span class="std std-ref">Build and Install FMIL</span></a>).</p>
</div>
</div>
</div>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../developer_information/20_documentation.html" class="btn btn-neutral float-left" title="Documentation Concept" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="20_glossary.html" class="btn btn-neutral float-right" title="Glossary" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></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>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>