Visual Studio Code (VSCode)

Visual Studio Code est un éditeur de code extensible développé par Microsoft pour Windows, Linux et macOS.

C’est un éditeur de code multi-plateforme, open source et gratuit, supportant une dizaine de langages (C/C++, Java, PHP, Python, Javascript, …).

Liens : Visual Studio Code

Installation

Liens :

Installer Visual Studio Code :

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
$ sudo apt-get install apt-transport-https
$ sudo apt-get update
$ sudo apt-get install code

Remarque : comme avec tout éditeur, il est impératif de jeter un coup d’oeil aux raccourcis clavier proposés, lire https://code.visualstudio.com/docs/getstarted/keybindings et https://code.visualstudio.com/docs/getstarted/tips-and-tricks.

C/C++

La prise en charge des langages C/C ++ pour Visual Studio Code est fournie par une extension Microsoft C/C ++ qui permet le développement multi-plateformes sous Windows, Linux et macOS.

Démarrer Visual Studio Code : aller dans FilePreferencesExtensions (Ctrl+Shift+X).

Rechercher : c++ et cliquer sur Install.

Le paramétrage de l’indentation est la première chose à faire :

Aller dans File → Preferences → Settings :

Premier pas

Créer un répertoire de travail :

$ mkdir src

Dans Visual Studio Code : aller dans FileAdd Folder to Workspace... : sélectionner le répertoire src et cliquer sur Add

Il est possible d’exécuter des commandes du shell directement dans le panneau Terminal :

Cliquer sur le fichier main.cpp et l’éditer :

On édite un premier programme :

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world !" << endl;

    return 0;
}

VS Code permet de définir des “tâches” que l’on va utiliser pour fabriquer l’exécutable puis le lancer.

Dans TerminalConfigure Tasks... ou Configure Default Build Task... puis choisir Create tasks.json file from template.

Le fichier tasks.json définit l’ensemble des tâches :

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build release",
            "type": "shell",
            "command": "g++",
            "args": [
                "main.cpp",
                "-o",
                "main"
            ],
            "problemMatcher": [
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "build debug",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "main.cpp",
                "-o",
                "main"
            ],
            "problemMatcher": [
            ]
        },
        {
            "label": "run",
            "type": "shell",
            "command": "./main",
            "dependsOn": [
                "build release"
            ],
            "problemMatcher": [
            ]
        }
    ]
}

Explications :

  • on nomme les tâches avec la clé label
  • on leur attribue un type, ici shell
  • on leur associe une command, les arguments seront définis un par un dans la clé args
  • on ajoute une dépendance à la tâche run qui entraînera l’exécution de la tâche Build
  • on marque la tâche build release comme la tâche par défaut pour la commande Run Build Task... (Ctrl+Maj+B)

Dans TerminalRun Task... puis choisir run (ou build).

au final, l’arborescence du répertoire src :

À partir du Terminal, il est possible d’ouvrir un fichier ou de voir les différences entre deux fichiers :

$ code src/main.cpp

$ code --diff src/main.cpp src/main2.cpp

Debug

VS Code propose une interface de débogage vers gdb.

On commence par ajouter une configuration :

Le fichier launch.json définit la session de débogage. Il faut au moins renseigner le chemin complet du programme dans la clé program :

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug g++",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/main",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${fileDirname}/",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "build debug",
        }
    ]
}

Ensuite, aller dans DebugStart Debugging (F5) :

Configuration

Il est possible de modifier la configuration spécifiquement à un répertoire de travail.

Aller dans ViewCommand Palette (Ctrl+Maj+P ou F1) :

Il est possible d’utiliser :

  • soit l’interface graphique :
  • soit directement le fichier c_cpp_properties.json :
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/g++",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

Extensions

Extensions C++

Il existe d’autres extensions pour le C/C++.

Aller dans FilePreferencesExtensions (Ctrl+Shift+X), puis rechercher : c++.

À partir du Terminal, il est possible de gérer ses extensions :

$ code --help

$ code --list-extensions

En voici quelques unes qui peuvent être utiles :

  • Thèmes (Light et Dark) :
  • svn (Subversion) :
  • Doxygen :

Cette extension fournit la génération des tags à la volée en démarrant un bloc de commentaires Doxygen (/**) et en appuyant sur Entrée.

/**
 * @brief ...
 *
 * @return int
 */
int main()
{
    return 0;
}
  • AStyle :

Cliquer le bouton droit de la souris et choisir Format Document ou Format Document With... :


  • Makefile :

Se placer sur un répertoire, puis aller dans ViewCommand Palette (Ctrl+Maj+P ou F1) :

  • C/C++ Projects Generator :

Aller dans ViewCommand Palette (Ctrl+Maj+P) :

L’extension va créer une arborescence de répertoires pour le projet ainsi que son Makefile :

  • Easy C++ projects :

Aller dans ViewCommand Palette (Ctrl+Maj+P) :

L’extension va créer une arborescence de répertoires pour le projet ainsi que son Makefile :

Elle permet aussi de générer le squelette d’une classe.

Autres extensions