-
Notifications
You must be signed in to change notification settings - Fork 0
WSL_C++23
In het EMS3 practicum maken we gebruik van CMake om programma's die zijn geschreven in C++23 te compileren.
Als je echter een C++ programma dat uit één bestand bestaat wilt compileren, dan is het gebruik van CMake niet handig omdat je dan altijd een CMakeLists.txt bestand moet gebruiken. Op deze pagina wordt uitgelegd hoe je zo'n C++23 programma zonder CMake kunt compileren, runnen en debuggen.
Voer de volgende commandos uit in de terminal van WSL:
cd ~ # Ga naar je home directory
mkdir progs # Maak een directory aan voor je programma's
cd progs # Ga naar de directory
code . # Open Visual Studio Code in dit directoryMaak een bestand hello_world.cpp aan met de volgende inhoud:
import std;
using namespace std;
int main() {
println("Hello, World!");
}Klik nu op de play knop in de rechterbovenhoek van Visual Studio Code.

Er zal een menu verschijnen waarin je de optie "C++: g++ build and debug active file" kunt selecteren.

Klik op deze optie.
Je krijgt nu deze foutmelding:

Klik op Abort.
Er is nu een bestand tasks.json aangemaakt in de directory .vscode. Open dit bestand en vervang het stukje onder "args": [ door de volgende code:
"args": [
"-fdiagnostics-color=always",
"-std=c++23",
"-fmodules",
"-Wall",
"-Wextra",
"-Wpedantic",
"-g3",
"-O0",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],De module's die we importeren (in dit geval std) moeten geprecompiled worden. Dit doe je door het volgende commando uit te voeren in de terminal van WSL:
g++ -std=c++23 -fmodules -fmodule-only -Wall -Wextra -Wpedantic -g3 -O0 -c -fsearch-include-path bits/std.ccDit zorgt ervoor dat het directory gcm.cache wordt aangemaakt in de directory progs. In dit directory staat nu een bestand std.gcm dat de geprecompileerde module bevat.
Nu kun je het bestand hello_world.cpp weer selecteren en op de play knop klikken in Visual Studio Code en je zult nu zien dat het programma succesvol wordt gecompileerd en uitgevoerd, en dat er "Hello, World!" wordt geprint in de terminal van Visual Studio Code.
De ingebouwde IntelliSense van Visual Studio Code geeft echter (op 1 mei 2026) nog steeds twee fouten aan omdat die C++23 nog niet ondersteunt (maar C++20 gebruikt), zie eventueel deze issue.

Hopelijk wordt dit binnenkort opgelost, maar in de tussentijd kun je deze foutmeldingen negeren.
Maak nu het bestand add.cpp aan met de volgende inhoud:
import std;
using namespace std;
int main() {
int a {2};
int b {10};
int c {a + b * 4};
println("Het resultaat is: {}", c);
}Zet een breakpoint op de regel int a {2}; en klik op het pijltje naar beneden naast de play knop.

Klik op "Debug C/C++ File".
De debugger zal nu starten en het programma zal stoppen bij de regel waar je een breakpoint hebt gezet. Je kunt nu de variabelen a, b en c inspecteren in het debug venster van Visual Studio Code.
Nadat je vier maal op "step over" hebt geklikt, zie je het volgende:

Het directory progs ziet er nu als volgt uit:

Je kunt nu eenvoudig programma's uit het dictaat naar dit directory kopiëren en ze eenvoudig compileren, runnen en debuggen door het volgende commando uit te voeren in de terminal van WSL:
Programma uit het dictaat ophalen uit het repository:
wget https://raw.githubusercontent.com/HR-ELEKTRO/cppprog/refs/heads/master/progs/lees_en_print_double.cppProgramma openen in Visual Studio Code:
code lees_en_print_double.cppJe kunt dit programma nu eenvoudig uitvoeren of debuggen m.b.v de play knop of je kunt op Ctrl+F5 drukken om het programma uit te voeren of op F5 om te debuggen.