WSL: C++ Entwicklung mit CLion

Beiträge der WSL Serie

Die Entwicklungsumgebung CLion von JetBrains bringt keinen eigenen Compiler mit sondern kann mit diversen Compilern umgehen.

Eine Option ist dabei, ein Windows Subsystem für Linux zu nutzen. Dann kann der Windows Arbeitsplatz genutzt werden, um Software für Linux zu entwickeln.

Software auf Debian installieren

Damit auf dem Debian WSL entwickelt werden kann, müssen erst die notwendigen Voraussetzungen geschaffen werden. Dazu werden die folgenden Pakete installiert:

Paket Beschreibung
build-essential Grundlegende Tools rund um den Compiler.
cmake cmake als Standard Make-Tool von CLion
gdb Debugger
ssh Sammlung von SSH Paketen incl. openssh-server

Die Installation kann mit folgendem Befehl durchgeführt werden:

sudo apt-get install build-essential cmake gdb ssh

Nach der Installation von ssh muss der Server noch gestartet werden:

sudo service ssh start

Konfiguration der CLion Toolchain

Als nächstes können wir die Toolchain in CLion konfigurieren. Dazu öffnen wir in CLion die Settings (File -> Settings…)
In den Settings finden sich die Toolchains unter Build, Execution, Deployment

Dort öffnet sich über das (+) ein kleines Menü, in dem WSL ausgewählt werden kann. Danach sind folgende Felder ausfüllbar:

Feld Beschreibung
Name Hier kann ein beliebiger Name für diese Toolchain eingegeben werden. Default ist WSL.
Environment In dem Dropdown kann keine WSL Umgebung ausgewählt werden, so mehrere installiert wurden.
Credentials Hier muss konfiguriert werden, wie CLion per ssh auf die WSL zugreifen soll. Eingabe von localhost als host und speichern von User/Passwort reicht schon aus. Wer kein Passwort speichern möchte, kann auch über einen SSH Key zugreifen.

Die übrigen Felder sollten automatisch gefüllt werden. CLion kann auf das System zugreifen und selbständig feststellen, welche Tools in welcher Version installiert sind.

Gratulation, CLion ist bereit, um mit dem Linux Subsystem C++ Projekte zu übersetzen!

Edits

19.06.2020 Tippfehler beseitigt, Paket heißt build-essential und nicht build-essentials