<!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 — 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> »</li> | |
<li><a href="../10_ide_support.html">IDE Support</a> »</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 "%PATH%;C:\msys64\usr\bin" | |
setx MSYSTEM "MINGW64" | |
setx CHERE_INVOKING "1" | |
</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">"name"</span><span class="o">:</span> <span class="s2">"MinGW64"</span><span class="p">,</span> | |
<span class="s2">"preferredGenerator"</span><span class="o">:</span> <span class="p">{</span> <span class="s2">"name"</span><span class="o">:</span> <span class="s2">"MinGW Makefiles"</span> <span class="p">},</span> | |
<span class="s2">"environmentVariables"</span><span class="o">:</span> <span class="p">{</span> <span class="s2">"PATH"</span><span class="o">:</span> <span class="s2">"${command:mingw64.path}"</span> <span class="p">},</span> | |
<span class="s2">"compilers"</span><span class="o">:</span> <span class="p">{</span> | |
<span class="s2">"C"</span><span class="o">:</span> <span class="s2">"${command:mingw64.cc.exe}"</span><span class="p">,</span> | |
<span class="s2">"CXX"</span><span class="o">:</span> <span class="s2">"${command:mingw64.cxx.exe}"</span><span class="p">,</span> | |
<span class="s2">"Fortran"</span><span class="o">:</span> <span class="s2">"${command:mingw64.fc.exe}"</span> | |
<span class="p">},</span> | |
<span class="s2">"keep"</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">"cmake.cmakePath"</span><span class="o">:</span> <span class="s2">"${command:cmake.buildkit.cmake.exe}"</span><span class="p">,</span> | |
<span class="s2">"cmake.preferredGenerators"</span><span class="o">:</span> <span class="p">[</span><span class="s2">"Unix Makefiles"</span><span class="p">],</span> | |
<span class="s2">"cmake.configureSettings"</span><span class="o">:</span> <span class="p">{</span> | |
<span class="s2">"CMAKE_MAKE_PROGRAM"</span><span class="o">:</span> <span class="s2">"${command:cmake.buildkit.generator.exe}"</span><span class="p">,</span> | |
<span class="s2">"CMAKE_VERBOSE_MAKEFILE"</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">"cmake.parallelJobs"</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">"cmake.configureArgs"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="s2">"-DCMAKE_INSTALL_PREFIX=C:\\OpenPASS\\bin\\core"</span><span class="p">,</span> | |
<span class="c1">// Adjust paths depending on your system</span> | |
<span class="s2">"-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"</span><span class="p">,</span> | |
<span class="s2">"-DUSE_CCACHE=ON"</span><span class="p">,</span> | |
<span class="s2">"-DCMAKE_BUILD_TYPE=Debug"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_GUI=OFF"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_SIMCORE=ON"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_TESTS=ON"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_DOC=OFF"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_DEBUG_POSTFIX=OFF"</span><span class="p">,</span> | |
<span class="s2">"-DINSTALL_SYSTEM_RUNTIME_DEPS=OFF"</span><span class="p">,</span> | |
<span class="s2">"-DINSTALL_EXTRA_RUNTIME_DEPS=ON"</span><span class="p">,</span> | |
<span class="c1">// For integration with IntelliSense (see c_cpp_properties.json)</span> | |
<span class="s2">"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"</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">"testMate.cpp.test.parallelExecutionLimit"</span><span class="o">:</span> <span class="mf">4</span><span class="p">,</span> | |
<span class="s2">"testMate.cpp.test.parallelExecutionOfExecutableLimit"</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">"testMate.cpp.log.logfile"</span><span class="o">:</span> <span class="s2">"C:\\temp\\cpp.testmate.log"</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 'ldd <_Tests.exe> and copy </span> | |
<span class="c1">// libraries right next to test executable within build direcory</span> | |
<span class="s2">"testMate.cpp.test.advancedExecutables"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"pattern"</span><span class="o">:</span> <span class="s2">"build/**/*{tests,Tests,TESTS}*"</span><span class="p">,</span> | |
<span class="s2">"env"</span><span class="o">:</span> <span class="p">{</span> | |
<span class="s2">"Path"</span><span class="o">:</span> <span class="s2">"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"</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">"terminal.integrated.profiles.windows"</span><span class="o">:</span> <span class="p">{</span> | |
<span class="s2">"MinGW64"</span><span class="o">:</span> <span class="p">{</span> | |
<span class="s2">"overrideName"</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> | |
<span class="s2">"path"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="s2">"C:\\msys64\\usr\\bin\\bash.exe"</span> | |
<span class="p">],</span> | |
<span class="s2">"args"</span><span class="o">:</span> <span class="p">[</span><span class="s2">"--login"</span><span class="p">,</span> <span class="s2">"-i"</span><span class="p">],</span> | |
<span class="s2">"icon"</span><span class="o">:</span> <span class="s2">"terminal-bash"</span><span class="p">,</span> | |
<span class="s2">"env"</span><span class="o">:</span> <span class="p">{</span> | |
<span class="s2">"MSYSTEM"</span><span class="o">:</span> <span class="s2">"MINGW64"</span><span class="p">,</span> | |
<span class="s2">"CHERE_INVOKING"</span><span class="o">:</span> <span class="s2">"1"</span><span class="p">,</span> | |
<span class="s2">"MSYS2_PATH_TYPE"</span><span class="o">:</span> <span class="s2">"inherit"</span> | |
<span class="p">}</span> | |
<span class="p">}</span> | |
<span class="p">},</span> | |
<span class="s2">"terminal.integrated.defaultProfile.windows"</span><span class="o">:</span> <span class="s2">"MinGW64"</span><span class="p">,</span> | |
<span class="c1">// Enforce usage of .clang-format of modified code</span> | |
<span class="s2">"editor.formatOnSave"</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> | |
<span class="s2">"editor.formatOnSaveMode"</span><span class="o">:</span> <span class="s2">"modifications"</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">"cmake.parallelJobs"</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">"cmake.configureArgs"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="s2">"-DCMAKE_INSTALL_PREFIX=/openPASS/bin/core"</span><span class="p">,</span> | |
<span class="c1">// Adjust paths depending on your system</span> | |
<span class="s2">"-DCMAKE_PREFIX_PATH=${workspaceRoot}/deps/thirdParty/linux64/FMILibrary;${workspaceRoot}/deps/thirdParty/linux64/osi;${workspaceRoot}/deps/thirdParty/linux64/minizip"</span><span class="p">,</span> | |
<span class="s2">"-DUSE_CCACHE=ON"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_GUI=OFF"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_SIMCORE=ON"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_TESTS=ON"</span><span class="p">,</span> | |
<span class="s2">"-DWITH_DOC=OFF"</span><span class="p">,</span> | |
<span class="c1">// For integration with IntelliSense (see c_cpp_properties.json)</span> | |
<span class="s2">"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"</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">"testMate.cpp.test.parallelExecutionLimit"</span><span class="o">:</span> <span class="mf">4</span><span class="p">,</span> | |
<span class="s2">"testMate.cpp.test.parallelExecutionOfExecutableLimit"</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">"testMate.cpp.log.logfile"</span><span class="o">:</span> <span class="s2">"/tmp/cpp.testmate.log"</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">"editor.formatOnSave"</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span> | |
<span class="s2">"editor.formatOnSaveMode"</span><span class="o">:</span> <span class="s2">"modifications"</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">"configurations"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"name"</span><span class="o">:</span> <span class="s2">"simopenpass"</span><span class="p">,</span> | |
<span class="s2">"cStandard"</span><span class="o">:</span> <span class="s2">"c99"</span><span class="p">,</span> | |
<span class="s2">"cppStandard"</span><span class="o">:</span> <span class="s2">"c++17"</span><span class="p">,</span> | |
<span class="s2">"configurationProvider"</span><span class="o">:</span> <span class="s2">"ms-vscode.cmake-tools"</span><span class="p">,</span> | |
<span class="s2">"compileCommands"</span><span class="o">:</span> <span class="s2">"${workspaceFolder}/build/compile_commands.json"</span><span class="p">,</span> | |
<span class="s2">"intelliSenseMode"</span><span class="o">:</span> <span class="s2">"linux-gcc-x64"</span> | |
<span class="p">}</span> | |
<span class="p">],</span> | |
<span class="s2">"version"</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> > <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">"version"</span><span class="o">:</span> <span class="s2">"0.2.0"</span><span class="p">,</span> | |
<span class="s2">"configurations"</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">"name"</span><span class="o">:</span> <span class="s2">"CMake Target"</span><span class="p">,</span> | |
<span class="s2">"type"</span><span class="o">:</span> <span class="s2">"cppdbg"</span><span class="p">,</span> | |
<span class="s2">"request"</span><span class="o">:</span> <span class="s2">"launch"</span><span class="p">,</span> | |
<span class="s2">"program"</span><span class="o">:</span> <span class="s2">"${command:cmake.launchTargetPath}"</span><span class="p">,</span> | |
<span class="s2">"args"</span><span class="o">:</span> <span class="p">[],</span> | |
<span class="s2">"stopAtEntry"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"cwd"</span><span class="o">:</span> <span class="s2">"${workspaceFolder}"</span><span class="p">,</span> | |
<span class="s2">"environment"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"name"</span><span class="o">:</span> <span class="s2">"PATH"</span><span class="p">,</span> | |
<span class="s2">"value"</span><span class="o">:</span> <span class="s2">"$PATH:${command:msys2.root}\\bin;${command:mingw64.root}\\x86_64-w64-mingw32\\lib${command:cmake.buildkit.launch.path}"</span> | |
<span class="p">}</span> | |
<span class="p">],</span> | |
<span class="s2">"externalConsole"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"MIMode"</span><span class="o">:</span> <span class="s2">"gdb"</span><span class="p">,</span> | |
<span class="s2">"miDebuggerPath"</span><span class="o">:</span> <span class="s2">"${command:cmake.buildkit.gdb.exe}"</span><span class="p">,</span> | |
<span class="s2">"setupCommands"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"description"</span><span class="o">:</span> <span class="s2">"Enable pretty-printing for gdb"</span><span class="p">,</span> | |
<span class="s2">"text"</span><span class="o">:</span> <span class="s2">"-enable-pretty-printing"</span><span class="p">,</span> | |
<span class="s2">"ignoreFailures"</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'T FORGET TO CALL make install)</span> | |
<span class="s2">"name"</span><span class="o">:</span> <span class="s2">"opsimulation"</span><span class="p">,</span> | |
<span class="s2">"type"</span><span class="o">:</span> <span class="s2">"cppdbg"</span><span class="p">,</span> | |
<span class="s2">"request"</span><span class="o">:</span> <span class="s2">"launch"</span><span class="p">,</span> | |
<span class="s2">"program"</span><span class="o">:</span> <span class="s2">"C:\\OpenPASS\\bin\\core\\opSimulation.exe"</span><span class="p">,</span> | |
<span class="s2">"args"</span><span class="o">:</span> <span class="p">[],</span> | |
<span class="s2">"stopAtEntry"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"cwd"</span><span class="o">:</span> <span class="s2">"C:\\OpenPASS\\bin\\core"</span><span class="p">,</span> | |
<span class="s2">"environment"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"name"</span><span class="o">:</span> <span class="s2">"PATH"</span><span class="p">,</span> | |
<span class="s2">"value"</span><span class="o">:</span> <span class="s2">"$PATH:${command:msys2.root}\\bin;${command:mingw64.root}\\x86_64-w64-mingw32\\lib${command:cmake.buildkit.launch.path}"</span> | |
<span class="p">}</span> | |
<span class="p">],</span> | |
<span class="s2">"externalConsole"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"MIMode"</span><span class="o">:</span> <span class="s2">"gdb"</span><span class="p">,</span> | |
<span class="s2">"miDebuggerPath"</span><span class="o">:</span> <span class="s2">"${command:cmake.buildkit.gdb.exe}"</span><span class="p">,</span> | |
<span class="s2">"setupCommands"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"description"</span><span class="o">:</span> <span class="s2">"Enable pretty-printing for gdb"</span><span class="p">,</span> | |
<span class="s2">"text"</span><span class="o">:</span> <span class="s2">"-enable-pretty-printing"</span><span class="p">,</span> | |
<span class="s2">"ignoreFailures"</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">"version"</span><span class="o">:</span> <span class="s2">"0.2.0"</span><span class="p">,</span> | |
<span class="s2">"configurations"</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">"name"</span><span class="o">:</span> <span class="s2">"CMake Target"</span><span class="p">,</span> | |
<span class="s2">"type"</span><span class="o">:</span> <span class="s2">"cppdbg"</span><span class="p">,</span> | |
<span class="s2">"request"</span><span class="o">:</span> <span class="s2">"launch"</span><span class="p">,</span> | |
<span class="s2">"program"</span><span class="o">:</span> <span class="s2">"${command:cmake.launchTargetPath}"</span><span class="p">,</span> | |
<span class="s2">"args"</span><span class="o">:</span> <span class="p">[],</span> | |
<span class="s2">"stopAtEntry"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"cwd"</span><span class="o">:</span> <span class="s2">"${workspaceFolder}"</span><span class="p">,</span> | |
<span class="s2">"externalConsole"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"MIMode"</span><span class="o">:</span> <span class="s2">"gdb"</span><span class="p">,</span> | |
<span class="s2">"setupCommands"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"description"</span><span class="o">:</span> <span class="s2">"Enable pretty-printing for gdb"</span><span class="p">,</span> | |
<span class="s2">"text"</span><span class="o">:</span> <span class="s2">"-enable-pretty-printing"</span><span class="p">,</span> | |
<span class="s2">"ignoreFailures"</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'T FORGET TO CALL make install)</span> | |
<span class="s2">"name"</span><span class="o">:</span> <span class="s2">"opsimulation"</span><span class="p">,</span> | |
<span class="s2">"type"</span><span class="o">:</span> <span class="s2">"cppdbg"</span><span class="p">,</span> | |
<span class="s2">"request"</span><span class="o">:</span> <span class="s2">"launch"</span><span class="p">,</span> | |
<span class="s2">"program"</span><span class="o">:</span> <span class="s2">"/openPASS/bin/core/opSimulation"</span><span class="p">,</span> | |
<span class="s2">"args"</span><span class="o">:</span> <span class="p">[],</span> | |
<span class="s2">"stopAtEntry"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"cwd"</span><span class="o">:</span> <span class="s2">"/openPASS/bin/core/"</span><span class="p">,</span> | |
<span class="s2">"externalConsole"</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> | |
<span class="s2">"MIMode"</span><span class="o">:</span> <span class="s2">"gdb"</span><span class="p">,</span> | |
<span class="s2">"setupCommands"</span><span class="o">:</span> <span class="p">[</span> | |
<span class="p">{</span> | |
<span class="s2">"description"</span><span class="o">:</span> <span class="s2">"Enable pretty-printing for gdb"</span><span class="p">,</span> | |
<span class="s2">"text"</span><span class="o">:</span> <span class="s2">"-enable-pretty-printing"</span><span class="p">,</span> | |
<span class="s2">"ignoreFailures"</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> | |
© 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> |