blob: 78734973d545795bed857c580507610436cb429a [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>Working with Visual Studio Code &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/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 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="Documentation Concept" href="../20_documentation.html" />
<link rel="prev" title="Working with Qt Creator" href="20_qt_creator.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">
0.8.0
</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 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"><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"><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"><span class="caption-text">Developer Information</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../10_ide_support.html">IDE Support</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="20_qt_creator.html">Working with Qt Creator</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Working with Visual Studio Code</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#assumptions">Assumptions</a></li>
<li class="toctree-l3"><a class="reference internal" href="#installation">Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="#configuration">Configuration</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#win-only-msys2-path"> MSYS2 Path</a></li>
<li class="toctree-l4"><a class="reference internal" href="#build-kit">Build Kit</a></li>
<li class="toctree-l4"><a class="reference internal" href="#user-settings">User Settings</a></li>
<li class="toctree-l4"><a class="reference internal" href="#c-and-intellisense">C++ and IntelliSense</a></li>
<li class="toctree-l4"><a class="reference internal" href="#configure-the-build">Configure the Build</a></li>
<li class="toctree-l4"><a class="reference internal" href="#debug-targets">Debug Targets</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../20_documentation.html">Documentation Concept</a></li>
</ul>
<p class="caption"><span class="caption-text">Other Information</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../other_information/10_external_dependencies.html">External Dependencies</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../other_information/20_glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../other_information/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="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="../10_ide_support.html">IDE Support</a> &raquo;</li>
<li>Working with Visual Studio Code</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/developer_information/ide_support/30_vscode.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="working-with-visual-studio-code">
<span id="vscode"></span><h1>Working with Visual Studio Code<a class="headerlink" href="#working-with-visual-studio-code" title="Permalink to this headline">ΒΆ</a></h1>
<p>This section describes the basic setup for Visual Studio Code.</p>
<div class="figure align-center" id="id1">
<img alt="../../_images/vscode_quick_intro.png" src="../../_images/vscode_quick_intro.png" />
<p class="caption"><span class="caption-text">Correctly configured Visual Studio Code showing – among other things – <strong>left</strong>, debugging, testmate, and cmake pane selectors, and at the <strong>bottom</strong>, build type, kit, current target, and CTest runner.</span><a class="headerlink" href="#id1" title="Permalink to this image">ΒΆ</a></p>
</div>
<div class="section" id="assumptions">
<h2>Assumptions<a class="headerlink" href="#assumptions" title="Permalink to this headline">ΒΆ</a></h2>
<ul class="simple">
<li><p>For brevity, non-standard libraries are expected to be in the folder <code class="docutils literal notranslate"><span class="pre">./deps/thirdParty</span></code>.</p></li>
<li><p><img alt="win_only" src="../../_images/win_only.png" /> <strong>MSYS2/MinGW 64 Bit</strong> is used.</p></li>
</ul>
</div>
<div class="section" id="installation">
<h2>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">ΒΆ</a></h2>
<ol class="arabic simple">
<li><p>Install Visual Studio Code (<a class="reference external" href="https://code.visualstudio.com">https://code.visualstudio.com</a>)</p></li>
<li><p>Install Extensions</p></li>
</ol>
<table class="docutils align-default">
<colgroup>
<col style="width: 65%" />
<col style="width: 35%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Name</p></th>
<th class="head"><p>Purpose</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference external" href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools">C/C++</a></p></td>
<td><p>Support for C/C++, including IntelliSense and debugging</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://vector-of-bool.github.io/docs/vscode-cmake-tools">CMake Tools</a></p></td>
<td><p>Extended CMake support</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://marketplace.visualstudio.com/items?itemName=matepek.vscode-catch2-test-adapter">C++ Testmate</a></p></td>
<td><p>Run and debug GoogleTest</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://marketplace.visualstudio.com/items?itemName=fougas.msys2">MSYS2/Cygwin/MinGW/Clang support</a></p></td>
<td><p><img alt="win_only" src="../../_images/win_only.png" /> MSYS2/MinGW configuration adapter</p></td>
</tr>
</tbody>
</table>
<ol class="arabic simple" start="3">
<li><p>Open the repository as folder, e.g. by calling <code class="docutils literal notranslate"><span class="pre">code</span> <span class="pre">simopenpass</span></code> after checking out.
Say yes, when CMake Tools ask to configure the project.
This creates a <code class="docutils literal notranslate"><span class="pre">build</span></code> folder, <strong>but fails</strong> (well, we need to config some stages).</p></li>
</ol>
</div>
<div class="section" id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">ΒΆ</a></h2>
<div class="section" id="win-only-msys2-path">
<h3><img alt="win_only" src="../../_images/win_only.png" /> MSYS2 Path<a class="headerlink" href="#win-only-msys2-path" title="Permalink to this headline">ΒΆ</a></h3>
<p>Normally, runtime dependencies (DLLs) are not copied into the executables folder within the build process.
This means, that programs cannot be executed natively from Windows shells or the explorer.
It is therefore highly recommended, to set the environmental variable <code class="docutils literal notranslate"><span class="pre">MSYSTEM=MINGW64</span></code> and <code class="docutils literal notranslate"><span class="pre">CHERE_INVOKING=1</span></code>.
The setting of <code class="docutils literal notranslate"><span class="pre">MSYSTEM</span></code> will cause the environment to be set up correctly for MinGW64.
Windows will then look for DLLs within the msys64 folders, allowing native execution.
<code class="docutils literal notranslate"><span class="pre">CHERE_INVOKING</span></code> makes sure the shell stays in the current working directory.
As investigated recently, the <code class="docutils literal notranslate"><span class="pre">C:\msys64\usr\bin``must</span> <span class="pre">also</span> <span class="pre">be</span> <span class="pre">added</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">``PATH</span></code> environment variable in order to resolve dependencies to <code class="docutils literal notranslate"><span class="pre">cygpath.exe</span></code>.</p>
<p>Either set environment variable through the <code class="docutils literal notranslate"><span class="pre">Windows</span> <span class="pre">PowerShell</span></code></p>
<div class="highlight-PowerShell notranslate"><div class="highlight"><pre><span></span># check if set
echo ${env:path}
echo ${env:MSYSTEM}
echo ${env:CHERE_INVOKING}
# if not
setx path &quot;%PATH%;C:\msys64\usr\bin&quot;
setx MSYSTEM &quot;MINGW64&quot;
setx CHERE_INVOKING &quot;1&quot;
</pre></div>
</div>
<p>or</p>
<ol class="arabic simple">
<li><p>Open the start search</p></li>
<li><p>Type in β€œenv” and choose β€œEdit the system environment variables”</p></li>
<li><p>Choose β€œEnvironment Variables…”</p></li>
<li><p>Set the environment variables:</p>
<ol class="lowerroman simple">
<li><p>MSYSTEM=MINGW64</p></li>
<li><p>CHERE_INVOKING=1</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">C:\msys64\usr\bin</span></code> to PATH</p></li>
</ol>
</li>
</ol>
<p>Visual Studio Code needs to be reloaded/restarted after the path update.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>An optimal solution would be to set the system environment variables in VSCode under <code class="docutils literal notranslate"><span class="pre">settings.json</span></code>. This is currently not possible. Please contact us if you find a better solution.</p>
</div>
<p>IDEs, as Qt Creator, might set this variable base on the current build type on their own.</p>
</div>
<div class="section" id="build-kit">
<h3>Build Kit<a class="headerlink" href="#build-kit" title="Permalink to this headline">ΒΆ</a></h3>
<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"><p><strong>Add and select MSYS2/MinGW64 Build Kit:</strong></p>
<ol class="arabic">
<li><p>Execute <code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code>: <code class="docutils literal notranslate"><span class="pre">CMake:</span> <span class="pre">Edit</span> <span class="pre">User-Local</span> <span class="pre">CMake</span> <span class="pre">Kits</span></code></p></li>
<li><p>Insert/Update:</p>
<div class="literal-block-wrapper docutils container" id="id2">
<div class="code-block-caption"><span class="caption-text">cmake-tools-kits.json</span><a class="headerlink" href="#id2" title="Permalink to this code">ΒΆ</a></div>
<div class="highlight-javascript notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;MinGW64&quot;</span><span class="p">,</span>
<span class="s2">&quot;preferredGenerator&quot;</span><span class="o">:</span> <span class="p">{</span> <span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;MinGW Makefiles&quot;</span> <span class="p">},</span>
<span class="s2">&quot;environmentVariables&quot;</span><span class="o">:</span> <span class="p">{</span> <span class="s2">&quot;PATH&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:mingw64.path}&quot;</span> <span class="p">},</span>
<span class="s2">&quot;compilers&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;C&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:mingw64.cc.exe}&quot;</span><span class="p">,</span>
<span class="s2">&quot;CXX&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:mingw64.cxx.exe}&quot;</span><span class="p">,</span>
<span class="s2">&quot;Fortran&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:mingw64.fc.exe}&quot;</span>
<span class="p">},</span>
<span class="s2">&quot;keep&quot;</span><span class="o">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</td></tr></table></div>
</div>
<p><a class="reference download internal" download="" href="../../_downloads/0434e3ab992f6eea8e1df4ae553aa93d/cmake-tools-kits.json"><code class="xref download docutils literal notranslate"><span class="pre">Download</span></code></a></p>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code>: <code class="docutils literal notranslate"><span class="pre">CMake:</span> <span class="pre">Select</span> <span class="pre">a</span> <span class="pre">Kit</span></code> = <code class="docutils literal notranslate"><span class="pre">MinGW64</span></code></p></li>
</ol>
</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"><p><strong>Select System Build Kit:</strong></p>
<p><code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code>: <code class="docutils literal notranslate"><span class="pre">CMake:</span> <span class="pre">Select</span> <span class="pre">a</span> <span class="pre">Kit</span></code> = <code class="docutils literal notranslate"><span class="pre">GCC</span> <span class="pre">10.2.0</span></code></p>
<p>See also <a class="reference internal" href="../../installation_guide/20_install_prerequisites.html#prerequisites"><span class="std std-ref">Installing Prerequisites</span></a>.</p>
</div></div>
</div>
<div class="section" id="user-settings">
<h3>User Settings<a class="headerlink" href="#user-settings" title="Permalink to this headline">ΒΆ</a></h3>
<ol class="arabic">
<li><p>Execute <code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code>: <code class="docutils literal notranslate"><span class="pre">Preferences</span> <span class="pre">Open</span> <span class="pre">Workspace</span> <span class="pre">Settings</span> <span class="pre">(JSON)</span></code></p></li>
<li><p>Insert/Update:</p>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-1-1-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-1-1-0" name="1-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-1-1-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-1-1-1" name="1-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-1-1-0" class="sphinx-tabs-panel" id="panel-1-1-0" name="1-0" role="tabpanel" tabindex="0"><div class="literal-block-wrapper docutils container" id="id3">
<div class="code-block-caption"><span class="caption-text">settings.json</span><a class="headerlink" href="#id3" title="Permalink to this code">ΒΆ</a></div>
<div class="highlight-javascript notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span>
<span class="normal">50</span>
<span class="normal">51</span>
<span class="normal">52</span>
<span class="normal">53</span>
<span class="normal">54</span>
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span>
<span class="normal">58</span>
<span class="normal">59</span>
<span class="normal">60</span>
<span class="normal">61</span>
<span class="normal">62</span>
<span class="normal">63</span>
<span class="normal">64</span>
<span class="normal">65</span>
<span class="normal">66</span>
<span class="normal">67</span>
<span class="normal">68</span>
<span class="normal">69</span>
<span class="normal">70</span>
<span class="normal">71</span>
<span class="normal">72</span>
<span class="normal">73</span>
<span class="normal">74</span>
<span class="normal">75</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="c1">//</span>
<span class="c1">// CMAKE</span>
<span class="c1">//</span>
<span class="c1">// Following settings are from the MSYS2 extension documentation</span>
<span class="s2">&quot;cmake.cmakePath&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:cmake.buildkit.cmake.exe}&quot;</span><span class="p">,</span>
<span class="s2">&quot;cmake.preferredGenerators&quot;</span><span class="o">:</span> <span class="p">[</span><span class="s2">&quot;Unix Makefiles&quot;</span><span class="p">],</span>
<span class="s2">&quot;cmake.configureSettings&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;CMAKE_MAKE_PROGRAM&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:cmake.buildkit.generator.exe}&quot;</span><span class="p">,</span>
<span class="s2">&quot;CMAKE_VERBOSE_MAKEFILE&quot;</span><span class="o">:</span> <span class="kc">false</span>
<span class="p">},</span>
<span class="c1">// Optional: Adjust to your needs</span>
<span class="s2">&quot;cmake.parallelJobs&quot;</span><span class="o">:</span> <span class="mf">4</span><span class="p">,</span>
<span class="c1">// See openPASS documentation for individual WITH_* settings</span>
<span class="s2">&quot;cmake.configureArgs&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="s2">&quot;-DCMAKE_INSTALL_PREFIX=C:\\OpenPASS\\bin\\core&quot;</span><span class="p">,</span>
<span class="c1">// Adjust paths depending on your system</span>
<span class="s2">&quot;-DCMAKE_PREFIX_PATH=${workspaceRoot}/deps/thirdParty/win64/FMILibrary;${workspaceRoot}/deps/thirdParty/win64/osi;${workspaceRoot}/deps/thirdParty/win64/minizip;${command:mingw64.root};${command:mingw64.root}/bin;${command:mingw64.root}/lib&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DUSE_CCACHE=ON&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DCMAKE_BUILD_TYPE=Debug&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_GUI=OFF&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_SIMCORE=ON&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_TESTS=ON&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_DOC=OFF&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_DEBUG_POSTFIX=OFF&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DINSTALL_SYSTEM_RUNTIME_DEPS=OFF&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DINSTALL_EXTRA_RUNTIME_DEPS=ON&quot;</span><span class="p">,</span>
<span class="c1">// For integration with IntelliSense (see c_cpp_properties.json)</span>
<span class="s2">&quot;-DCMAKE_EXPORT_COMPILE_COMMANDS=ON&quot;</span>
<span class="p">],</span>
<span class="c1">//</span>
<span class="c1">// TESTMATE</span>
<span class="c1">//</span>
<span class="c1">// Optional: Adjust to your needs</span>
<span class="s2">&quot;testMate.cpp.test.parallelExecutionLimit&quot;</span><span class="o">:</span> <span class="mf">4</span><span class="p">,</span>
<span class="s2">&quot;testMate.cpp.test.parallelExecutionOfExecutableLimit&quot;</span><span class="o">:</span> <span class="mf">2</span><span class="p">,</span>
<span class="c1">// Optional: Set, if you like to debug test discovery and test start issues</span>
<span class="s2">&quot;testMate.cpp.log.logfile&quot;</span><span class="o">:</span> <span class="s2">&quot;C:\\temp\\cpp.testmate.log&quot;</span><span class="p">,</span>
<span class="c1">// Optional: As CTest triggers the install step, dependencies between test executables </span>
<span class="c1">// and openpass libraries can be resolved by linking text executables to</span>
<span class="c1">// openpass install directory</span>
<span class="c1">// Alternative: Check dependencies of test executables by &#39;ldd &lt;_Tests.exe&gt; and copy </span>
<span class="c1">// libraries right next to test executable within build direcory</span>
<span class="s2">&quot;testMate.cpp.test.advancedExecutables&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;pattern&quot;</span><span class="o">:</span> <span class="s2">&quot;build/**/*{tests,Tests,TESTS}*&quot;</span><span class="p">,</span>
<span class="s2">&quot;env&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;Path&quot;</span><span class="o">:</span> <span class="s2">&quot;C:\\msys64\\mingw64\\bin;C:\\OpenPASS\\bin\\core;C:\\OpenPASS\\bin\\core\\lib;${os_env:PATH};${workspaceFolder}\\deps\\thirdParty\\win64\\FMILibrary\\lib;${workspaceFolder}\\deps\\thirdParty\\win64\\osi\\lib\\osi3&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="c1">//</span>
<span class="c1">// VSCODE</span>
<span class="c1">//</span>
<span class="c1">// Optional: Integration of MinGW64 Terminal in VS Code</span>
<span class="s2">&quot;terminal.integrated.profiles.windows&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;MinGW64&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;overrideName&quot;</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="s2">&quot;path&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="s2">&quot;C:\\msys64\\usr\\bin\\bash.exe&quot;</span>
<span class="p">],</span>
<span class="s2">&quot;args&quot;</span><span class="o">:</span> <span class="p">[</span><span class="s2">&quot;--login&quot;</span><span class="p">,</span> <span class="s2">&quot;-i&quot;</span><span class="p">],</span>
<span class="s2">&quot;icon&quot;</span><span class="o">:</span> <span class="s2">&quot;terminal-bash&quot;</span><span class="p">,</span>
<span class="s2">&quot;env&quot;</span><span class="o">:</span> <span class="p">{</span>
<span class="s2">&quot;MSYSTEM&quot;</span><span class="o">:</span> <span class="s2">&quot;MINGW64&quot;</span><span class="p">,</span>
<span class="s2">&quot;CHERE_INVOKING&quot;</span><span class="o">:</span> <span class="s2">&quot;1&quot;</span><span class="p">,</span>
<span class="s2">&quot;MSYS2_PATH_TYPE&quot;</span><span class="o">:</span> <span class="s2">&quot;inherit&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="s2">&quot;terminal.integrated.defaultProfile.windows&quot;</span><span class="o">:</span> <span class="s2">&quot;MinGW64&quot;</span><span class="p">,</span>
<span class="c1">// Enforce usage of .clang-format of modified code</span>
<span class="s2">&quot;editor.formatOnSave&quot;</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="s2">&quot;editor.formatOnSaveMode&quot;</span><span class="o">:</span> <span class="s2">&quot;modifications&quot;</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<p><a class="reference download internal" download="" href="../../_downloads/cf3a708e6048855aab4490b408d22f7c/settings.json"><code class="xref download docutils literal notranslate"><span class="pre">Download</span></code></a></p>
</div><div aria-labelledby="tab-1-1-1" class="sphinx-tabs-panel" hidden="true" id="panel-1-1-1" name="1-1" role="tabpanel" tabindex="0"><div class="literal-block-wrapper docutils container" id="id4">
<div class="code-block-caption"><span class="caption-text">settings.json</span><a class="headerlink" href="#id4" title="Permalink to this code">ΒΆ</a></div>
<div class="highlight-javascript notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="c1">//</span>
<span class="c1">// CMAKE</span>
<span class="c1">//</span>
<span class="c1">// Optional: Adjust to your needs</span>
<span class="s2">&quot;cmake.parallelJobs&quot;</span><span class="o">:</span> <span class="mf">4</span><span class="p">,</span>
<span class="c1">// See openPASS documentation for individual WITH_* settings</span>
<span class="s2">&quot;cmake.configureArgs&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="s2">&quot;-DCMAKE_INSTALL_PREFIX=/openPASS/bin/core&quot;</span><span class="p">,</span>
<span class="c1">// Adjust paths depending on your system</span>
<span class="s2">&quot;-DCMAKE_PREFIX_PATH=${workspaceRoot}/deps/thirdParty/linux64/FMILibrary;${workspaceRoot}/deps/thirdParty/linux64/osi;${workspaceRoot}/deps/thirdParty/linux64/minizip&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DUSE_CCACHE=ON&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_GUI=OFF&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_SIMCORE=ON&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_TESTS=ON&quot;</span><span class="p">,</span>
<span class="s2">&quot;-DWITH_DOC=OFF&quot;</span><span class="p">,</span>
<span class="c1">// For integration with IntelliSense (see c_cpp_properties.json)</span>
<span class="s2">&quot;-DCMAKE_EXPORT_COMPILE_COMMANDS=ON&quot;</span>
<span class="p">],</span>
<span class="c1">//</span>
<span class="c1">// TESTMATE</span>
<span class="c1">//</span>
<span class="c1">// Optional: Adjust to your needs</span>
<span class="s2">&quot;testMate.cpp.test.parallelExecutionLimit&quot;</span><span class="o">:</span> <span class="mf">4</span><span class="p">,</span>
<span class="s2">&quot;testMate.cpp.test.parallelExecutionOfExecutableLimit&quot;</span><span class="o">:</span> <span class="mf">2</span><span class="p">,</span>
<span class="c1">// Optional: Set, if you like to debug test discovery and test start issues</span>
<span class="s2">&quot;testMate.cpp.log.logfile&quot;</span><span class="o">:</span> <span class="s2">&quot;/tmp/cpp.testmate.log&quot;</span><span class="p">,</span>
<span class="c1">//</span>
<span class="c1">// VSCODE</span>
<span class="c1">//</span>
<span class="c1">// Enforce usage of .clang-format of modified code</span>
<span class="s2">&quot;editor.formatOnSave&quot;</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="s2">&quot;editor.formatOnSaveMode&quot;</span><span class="o">:</span> <span class="s2">&quot;modifications&quot;</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<p><a class="reference download internal" download="" href="../../_downloads/631d97fb2e9fb8f8491268ef3e6ec616/settings.json"><code class="xref download docutils literal notranslate"><span class="pre">Download</span></code></a></p>
</div></div>
</li>
</ol>
</div>
<div class="section" id="c-and-intellisense">
<h3>C++ and IntelliSense<a class="headerlink" href="#c-and-intellisense" title="Permalink to this headline">ΒΆ</a></h3>
<ol class="arabic">
<li><p>Execute <code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code>: <code class="docutils literal notranslate"><span class="pre">C/C++:</span> <span class="pre">Edit</span> <span class="pre">Configurations</span> <span class="pre">(JSON)</span></code></p></li>
<li><div class="literal-block-wrapper docutils container" id="id5">
<div class="code-block-caption"><span class="caption-text">c_cpp_properties.json</span><a class="headerlink" href="#id5" title="Permalink to this code">ΒΆ</a></div>
<div class="highlight-javascript notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;configurations&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;simopenpass&quot;</span><span class="p">,</span>
<span class="s2">&quot;cStandard&quot;</span><span class="o">:</span> <span class="s2">&quot;c99&quot;</span><span class="p">,</span>
<span class="s2">&quot;cppStandard&quot;</span><span class="o">:</span> <span class="s2">&quot;c++17&quot;</span><span class="p">,</span>
<span class="s2">&quot;configurationProvider&quot;</span><span class="o">:</span> <span class="s2">&quot;ms-vscode.cmake-tools&quot;</span><span class="p">,</span>
<span class="s2">&quot;compileCommands&quot;</span><span class="o">:</span> <span class="s2">&quot;${workspaceFolder}/build/compile_commands.json&quot;</span><span class="p">,</span>
<span class="s2">&quot;intelliSenseMode&quot;</span><span class="o">:</span> <span class="s2">&quot;linux-gcc-x64&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="s2">&quot;version&quot;</span><span class="o">:</span> <span class="mf">4</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<p><a class="reference download internal" download="" href="../../_downloads/dca649c6abf7935b694a9b820bb4efc5/c_cpp_properties.json"><code class="xref download docutils literal notranslate"><span class="pre">Download</span></code></a></p>
</li>
</ol>
</div>
<div class="section" id="configure-the-build">
<h3>Configure the Build<a class="headerlink" href="#configure-the-build" title="Permalink to this headline">ΒΆ</a></h3>
<p>Execute <code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code>: <code class="docutils literal notranslate"><span class="pre">CMake:</span> <span class="pre">Configure</span></code></p>
<p>CMake should now be able to configure the project.
If not, cmake should give you at least a hint, what’s missing (normally external libraries).
Read <a class="reference internal" href="../../installation_guide/further_guidance/10_cmake.html#cmake"><span class="std std-ref">CMake Variables and Options</span></a> or <a class="reference internal" href="../../installation_guide/20_install_prerequisites.html#prerequisites"><span class="std std-ref">Installing Prerequisites</span></a> for more information.</p>
<div class="admonition-cmake admonition">
<p class="admonition-title">CMake</p>
<p>Some changes such as changing the build type (Debug/Release) will cause CMake to updates the configuration automatically.
Other changes won’t trigger an update, such as changing the paths to libraries (<cite>CMAKE_PREFIX_PATH</cite>), the cmake cache needs to be cleared before reconfiguration:
<code class="docutils literal notranslate"><span class="pre">Ctrk+Shift+P</span></code> &gt; <code class="docutils literal notranslate"><span class="pre">CMake:</span> <span class="pre">Delete</span> <span class="pre">Cache</span> <span class="pre">and</span> <span class="pre">Reconfigure</span></code></p>
</div>
</div>
<div class="section" id="debug-targets">
<h3>Debug Targets<a class="headerlink" href="#debug-targets" title="Permalink to this headline">ΒΆ</a></h3>
<p>CMake Tools and C++ Testmate automatically use custom launch configurations, if available.
When using the debugging functionality, the according executable will be executed from where they are built (per default inside the <code class="docutils literal notranslate"><span class="pre">build</span></code> folder).</p>
<ul>
<li><p>This is acceptable for unit test, which do not require openPASS specific libraries.
The corresponding config is <code class="docutils literal notranslate"><span class="pre">CMake</span> <span class="pre">Target</span></code>.</p></li>
<li><p>For the core, located at <code class="docutils literal notranslate"><span class="pre">./build/sim/src/core/opSimulation/opSimulation</span></code>, this does not work, as no libraries and no configurations are available.
As a solution, a second debug target <code class="docutils literal notranslate"><span class="pre">opsimulation</span></code> points at the installed executable instead.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Don’t forget to run the target <code class="docutils literal notranslate"><span class="pre">install</span></code> before debugging .</p>
</div>
</li>
</ul>
<ol class="arabic simple">
<li><p>Got to β€œRun and Debug” (<code class="docutils literal notranslate"><span class="pre">Ctrl+Shift+D</span></code>) and <em>create a launch.json file</em>.</p></li>
<li><p>Insert/Update:</p></li>
</ol>
<div class="sphinx-tabs docutils container">
<div aria-label="Tabbed content" class="closeable" role="tablist"><button aria-controls="panel-2-2-0" aria-selected="true" class="sphinx-tabs-tab" id="tab-2-2-0" name="2-0" role="tab" tabindex="0">Windows</button><button aria-controls="panel-2-2-1" aria-selected="false" class="sphinx-tabs-tab" id="tab-2-2-1" name="2-1" role="tab" tabindex="-1">Linux</button></div><div aria-labelledby="tab-2-2-0" class="sphinx-tabs-panel" id="panel-2-2-0" name="2-0" role="tabpanel" tabindex="0"><div class="literal-block-wrapper docutils container" id="id6">
<div class="code-block-caption"><span class="caption-text">launch.json</span><a class="headerlink" href="#id6" title="Permalink to this code">ΒΆ</a></div>
<div class="highlight-javascript notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span>
<span class="normal">44</span>
<span class="normal">45</span>
<span class="normal">46</span>
<span class="normal">47</span>
<span class="normal">48</span>
<span class="normal">49</span>
<span class="normal">50</span>
<span class="normal">51</span>
<span class="normal">52</span>
<span class="normal">53</span>
<span class="normal">54</span>
<span class="normal">55</span>
<span class="normal">56</span>
<span class="normal">57</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;version&quot;</span><span class="o">:</span> <span class="s2">&quot;0.2.0&quot;</span><span class="p">,</span>
<span class="s2">&quot;configurations&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="c1">// FOR TESTMATE (SELECTED TEST) AND CMAKE (DEBUG CMAKE TARGET)</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;CMake Target&quot;</span><span class="p">,</span>
<span class="s2">&quot;type&quot;</span><span class="o">:</span> <span class="s2">&quot;cppdbg&quot;</span><span class="p">,</span>
<span class="s2">&quot;request&quot;</span><span class="o">:</span> <span class="s2">&quot;launch&quot;</span><span class="p">,</span>
<span class="s2">&quot;program&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:cmake.launchTargetPath}&quot;</span><span class="p">,</span>
<span class="s2">&quot;args&quot;</span><span class="o">:</span> <span class="p">[],</span>
<span class="s2">&quot;stopAtEntry&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;cwd&quot;</span><span class="o">:</span> <span class="s2">&quot;${workspaceFolder}&quot;</span><span class="p">,</span>
<span class="s2">&quot;environment&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;PATH&quot;</span><span class="p">,</span>
<span class="s2">&quot;value&quot;</span><span class="o">:</span> <span class="s2">&quot;$PATH:${command:msys2.root}\\bin;${command:mingw64.root}\\x86_64-w64-mingw32\\lib${command:cmake.buildkit.launch.path}&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="s2">&quot;externalConsole&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;MIMode&quot;</span><span class="o">:</span> <span class="s2">&quot;gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;miDebuggerPath&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:cmake.buildkit.gdb.exe}&quot;</span><span class="p">,</span>
<span class="s2">&quot;setupCommands&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;description&quot;</span><span class="o">:</span> <span class="s2">&quot;Enable pretty-printing for gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;text&quot;</span><span class="o">:</span> <span class="s2">&quot;-enable-pretty-printing&quot;</span><span class="p">,</span>
<span class="s2">&quot;ignoreFailures&quot;</span><span class="o">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="c1">// FOR DEBUGGING opSimulation (DON&#39;T FORGET TO CALL make install)</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;opsimulation&quot;</span><span class="p">,</span>
<span class="s2">&quot;type&quot;</span><span class="o">:</span> <span class="s2">&quot;cppdbg&quot;</span><span class="p">,</span>
<span class="s2">&quot;request&quot;</span><span class="o">:</span> <span class="s2">&quot;launch&quot;</span><span class="p">,</span>
<span class="s2">&quot;program&quot;</span><span class="o">:</span> <span class="s2">&quot;C:\\OpenPASS\\bin\\core\\opSimulation.exe&quot;</span><span class="p">,</span>
<span class="s2">&quot;args&quot;</span><span class="o">:</span> <span class="p">[],</span>
<span class="s2">&quot;stopAtEntry&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;cwd&quot;</span><span class="o">:</span> <span class="s2">&quot;C:\\OpenPASS\\bin\\core&quot;</span><span class="p">,</span>
<span class="s2">&quot;environment&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;PATH&quot;</span><span class="p">,</span>
<span class="s2">&quot;value&quot;</span><span class="o">:</span> <span class="s2">&quot;$PATH:${command:msys2.root}\\bin;${command:mingw64.root}\\x86_64-w64-mingw32\\lib${command:cmake.buildkit.launch.path}&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="s2">&quot;externalConsole&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;MIMode&quot;</span><span class="o">:</span> <span class="s2">&quot;gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;miDebuggerPath&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:cmake.buildkit.gdb.exe}&quot;</span><span class="p">,</span>
<span class="s2">&quot;setupCommands&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;description&quot;</span><span class="o">:</span> <span class="s2">&quot;Enable pretty-printing for gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;text&quot;</span><span class="o">:</span> <span class="s2">&quot;-enable-pretty-printing&quot;</span><span class="p">,</span>
<span class="s2">&quot;ignoreFailures&quot;</span><span class="o">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<p><a class="reference download internal" download="" href="../../_downloads/29dd021e0bdb423fc1a0b9b1d8df02f7/launch.json"><code class="xref download docutils literal notranslate"><span class="pre">Download</span></code></a></p>
</div><div aria-labelledby="tab-2-2-1" class="sphinx-tabs-panel" hidden="true" id="panel-2-2-1" name="2-1" role="tabpanel" tabindex="0"><div class="literal-block-wrapper docutils container" id="id7">
<div class="code-block-caption"><span class="caption-text">launch.json</span><a class="headerlink" href="#id7" title="Permalink to this code">ΒΆ</a></div>
<div class="highlight-javascript notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span>
<span class="normal">16</span>
<span class="normal">17</span>
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span>
<span class="normal">23</span>
<span class="normal">24</span>
<span class="normal">25</span>
<span class="normal">26</span>
<span class="normal">27</span>
<span class="normal">28</span>
<span class="normal">29</span>
<span class="normal">30</span>
<span class="normal">31</span>
<span class="normal">32</span>
<span class="normal">33</span>
<span class="normal">34</span>
<span class="normal">35</span>
<span class="normal">36</span>
<span class="normal">37</span>
<span class="normal">38</span>
<span class="normal">39</span>
<span class="normal">40</span>
<span class="normal">41</span>
<span class="normal">42</span>
<span class="normal">43</span></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s2">&quot;version&quot;</span><span class="o">:</span> <span class="s2">&quot;0.2.0&quot;</span><span class="p">,</span>
<span class="s2">&quot;configurations&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="c1">// FOR TESTMATE (SELECTED TEST) AND CMAKE (DEBUG CMAKE TARGET)</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;CMake Target&quot;</span><span class="p">,</span>
<span class="s2">&quot;type&quot;</span><span class="o">:</span> <span class="s2">&quot;cppdbg&quot;</span><span class="p">,</span>
<span class="s2">&quot;request&quot;</span><span class="o">:</span> <span class="s2">&quot;launch&quot;</span><span class="p">,</span>
<span class="s2">&quot;program&quot;</span><span class="o">:</span> <span class="s2">&quot;${command:cmake.launchTargetPath}&quot;</span><span class="p">,</span>
<span class="s2">&quot;args&quot;</span><span class="o">:</span> <span class="p">[],</span>
<span class="s2">&quot;stopAtEntry&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;cwd&quot;</span><span class="o">:</span> <span class="s2">&quot;${workspaceFolder}&quot;</span><span class="p">,</span>
<span class="s2">&quot;externalConsole&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;MIMode&quot;</span><span class="o">:</span> <span class="s2">&quot;gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;setupCommands&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;description&quot;</span><span class="o">:</span> <span class="s2">&quot;Enable pretty-printing for gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;text&quot;</span><span class="o">:</span> <span class="s2">&quot;-enable-pretty-printing&quot;</span><span class="p">,</span>
<span class="s2">&quot;ignoreFailures&quot;</span><span class="o">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="c1">// FOR DEBUGGING opSimulation (DON&#39;T FORGET TO CALL make install)</span>
<span class="s2">&quot;name&quot;</span><span class="o">:</span> <span class="s2">&quot;opsimulation&quot;</span><span class="p">,</span>
<span class="s2">&quot;type&quot;</span><span class="o">:</span> <span class="s2">&quot;cppdbg&quot;</span><span class="p">,</span>
<span class="s2">&quot;request&quot;</span><span class="o">:</span> <span class="s2">&quot;launch&quot;</span><span class="p">,</span>
<span class="s2">&quot;program&quot;</span><span class="o">:</span> <span class="s2">&quot;/openPASS/bin/core/opSimulation&quot;</span><span class="p">,</span>
<span class="s2">&quot;args&quot;</span><span class="o">:</span> <span class="p">[],</span>
<span class="s2">&quot;stopAtEntry&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;cwd&quot;</span><span class="o">:</span> <span class="s2">&quot;/openPASS/bin/core/&quot;</span><span class="p">,</span>
<span class="s2">&quot;externalConsole&quot;</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="s2">&quot;MIMode&quot;</span><span class="o">:</span> <span class="s2">&quot;gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;setupCommands&quot;</span><span class="o">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="s2">&quot;description&quot;</span><span class="o">:</span> <span class="s2">&quot;Enable pretty-printing for gdb&quot;</span><span class="p">,</span>
<span class="s2">&quot;text&quot;</span><span class="o">:</span> <span class="s2">&quot;-enable-pretty-printing&quot;</span><span class="p">,</span>
<span class="s2">&quot;ignoreFailures&quot;</span><span class="o">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<p><a class="reference download internal" download="" href="../../_downloads/f717c80213b149820a0dc8e07e803940/launch.json"><code class="xref download docutils literal notranslate"><span class="pre">Download</span></code></a></p>
</div></div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>IntelliSense uses the <code class="docutils literal notranslate"><span class="pre">compile_commands.json</span></code> of generated through <code class="docutils literal notranslate"><span class="pre">CMAKE_EXPORT_COMPILE_COMMANDS=ON</span></code> (see <code class="docutils literal notranslate"><span class="pre">settings.json</span></code>).
This is necessary for proper resolution of the include files.</p>
</div>
</div>
</div>
<div class="section" id="troubleshooting">
<h2>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">ΒΆ</a></h2>
<p><img alt="win_only" src="../../_images/win_only.png" /> <strong>Program does not start</strong></p>
<p>The most effective way to debug startup issues is by means of the <a class="reference external" href="https://docs.microsoft.com/en-us/sysinternals/downloads/procmon">Process Monitor</a>.</p>
<p>But normally, its a missing DLL. When executing the program via command line or explorer a message box should prompt which DLLs are missing.
A simple solution is to copy the according DLLs into the folder of the executable.
Another solution is to make the path available by extending the <code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable.
Potential sources for missing DLLs are <code class="docutils literal notranslate"><span class="pre">C:\msys64\mingw64\bin</span></code>, <code class="docutils literal notranslate"><span class="pre">C:\msys64\mingw64\x86_64-w64-mingw32\lib</span></code>, and the <code class="docutils literal notranslate"><span class="pre">build</span></code> folder itself.</p>
<p><strong>Tests are not listed</strong></p>
<p>For test discovery, C++ Testmate needs to know the location of all additional dependencies.
This information is retrieved from the current debug configuration.</p>
<ol class="arabic simple">
<li><p>Testmate discovers tests only after they are built.
It pays to <code class="docutils literal notranslate"><span class="pre">Run</span> <span class="pre">CTest</span></code> to build all test targets.
After this, you should see all tests in the testing pane on the left.</p></li>
<li><p>Still not listed? Set <code class="docutils literal notranslate"><span class="pre">testMate.cpp.log.logfile</span></code> in <code class="docutils literal notranslate"><span class="pre">settings.json</span></code> and check log.</p>
<ol class="arabic simple">
<li><p>Test executable not mentioned at all:
Executable name might not fit (check glob pattern in <code class="docutils literal notranslate"><span class="pre">testMate.cpp.test.executables</span></code>).</p></li>
<li><p>Log reports <em>Error: Not a supported test executable</em>: a library/DLL might be missing.</p></li>
</ol>
</li>
</ol>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../20_documentation.html" class="btn btn-neutral float-right" title="Documentation Concept" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="20_qt_creator.html" class="btn btn-neutral float-left" title="Working with Qt Creator" 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>