Superbe environnement de développement en C sous Windows

Cet article va vous permettre de faire du développement en langage C dans l’environnement Windows 10. Jusqu’à présent, j’ai uniquement abordé le développement en C dans un environnement « Unix-like » (Linux ou Mac OS).

Malgré l’absence de compilateur installé nativement, il est tout à fait possible de coder en C sous Windows, y compris avec des logiciels libres (ou presque). L’environnement présenté ici est le compilateur C de GNU (gcc) porté sous Windows et l’éditeur de code Visual Studio Code.

VSC
Le mariage de la carpe et du lapin ?

MinGW-w64

Il s’agit d’un portage de gcc sous Windows. On retrouve également le compilateur C++, le compilateur Fortran, l’outil make et le débogueur gdb. Disponible pour Windows 64 et 32 bits.

Un superbe éditeur de code de Microsoft avec des très nombreuses extensions, pour un nombre incroyable de langages de programmation. L’interface est superbe et il est facile de transformer VSC en IDE. Pour un logiciel Microsoft, il présente les caractéristiques étonnantes d’être :

  • multi-plateformes (Win, Linux et Mac OS),
  • léger (326 Mo sur mon disque),
  • open source à quelques détails près.

Incroyable ! Quand Microsoft met à disposition un tel outil, il ne faut pas se priver !

Installation

Un tutoriel est disponible sur le site de VSC : Using GCC with MinGW. Il est en anglais mais bien expliqué et simple à suivre. Bien que rédigé pour le C++, il est facilement transposable au C, les composants logiciels étant les mêmes. Je ne vais pas tout re-décrire, mais simplement reprendre les étapes principales :

  1. Installation de Visual Studio Code

Sélectionner la version qui correspond à votre PC (j’utilise la version 64bits et le « System Installer »). La procédure d’installation est triviale.

Vous pouvez ensuite installer l’extension « French Language Pack for Visual Studio Code » pour avoir le logiciel dans notre langue.

  1. Ajout de l’extension C/C++ extension for VS Code. Vous la trouverez facilement en effectuant la recherche « C » la vue des extensions (Ctrl+Shift+X).
  1. L’installation de MinGW-w64 est la plus fastidieux. Il faut tout d’abord installer MSYS2 qui comprend un ensemble d’outils sous Linux permettant l’installation de MinGW-w64. On retrouve en particulier un outil de gestion de paquets dénommé Pacman.
Non, ce n’est pas ce Pacman là !

Pacman est un outil utilisé avec la distribution ArchLinux similaire à Apt sous Debian. Pour installer MinGW-w64, suivez simplement (et strictement !) la procédure figurant sur la page d’accueil de MSYS2 . Par la suite, Pacman vous permettra facilement de mettre à jour les packages. Pour cela, depuis MSYS2 :

  • Mise à jour des dépôts (Synchronizing package database) :
$ pacman -Syy
  • Installation de paquets :
$ pacman -Syu
  1. Path

Il est important d’ajouter les deux répertoires suivants au PATH de Windows :

C:\msys64\mingw64\bin
C:\msys64\usr\bin

Ceci permet de lancer gcc, make et différents utilitaires Linux depuis la fenêtre de commande de Windows (ls, tar, cmp, find, etc.)

Utilisation de VSC et MinGW-w64

Même si tout est bien expliqué dans le tuto, je vais illustrer l’utilisation de VSC en développant un petit outil de comparaison de chaînes de caractères qui sera utilisé dans un futur projet de jeu d’aventure en C…

//---------------------------------------------------------------------
//  MODULE: comp_str.c
//  -------
//
//  DESCRIPTION:
//  ------------
//  Simple tool to compare two string, not case sensitive.
//
//	AUTHOR: D. RIOUAL
//  -------
//
//	LOGS:
//	-----
//	09/08/22    V1.0	First release
//
//---------------------------------------------------------------------
#include <stdio.h>

#define TEXT_LENGTH_MAX 256

typedef unsigned short t_usi ;
typedef enum {FALSE, TRUE} t_bool ;

//
// Declaration of functions :
//
t_bool compare(char*,char*);  // compare two strings

//
// Main function
//
int main(void) {

    t_bool identical = FALSE;

    char str1[TEXT_LENGTH_MAX], str2[TEXT_LENGTH_MAX];

    printf("Enter 1st string -> ");
    gets(str1);
    printf("Enter 2nd string -> ");
    gets(str2);

    identical = compare(str1, str2);

    printf("\nComparing {%s} with {%s}", str1, str2);
    printf("\nStrings are ");
    
    if (identical == TRUE) 
        printf("indentical.");
    else
        printf("different.");
    

    return identical;
}

//
// Function : compare 
//
t_bool compare (char *s1, char*s2) {

    t_usi i;
    char c1,c2;

    for (i = 0; i < TEXT_LENGTH_MAX ; i++) {
        c1 = *(s1+i);
        c2 = *(s2+i);

        // Not case sensitive
        if (c1 >= 65 && c1 <= 90)
            c1 += 32;
        if (c2 >= 65 && c2 <= 90)
            c2 += 32;

        if (c1 != c2)
            return FALSE;
        else if (c1 == 0)
            return TRUE; 
    }

    return TRUE;
}

Pour éditer et compiler ce code dans Visual Studio Code :

  • Créez un répertoire pour votre projet.
  • Dans ce répertoire, créez un fichier vide comp_str.c
  • Ouvrir une fenêtre de commande Windows puis allez dans le répertoire du projet :
cd d:\home\dom\dev\C\projects\comp_str
code .

La dernière commande va lancer VSC et définir votre espace de travail comme étant le répertoire où se trouve votre code. Vous pouvez ensuite ouvrir le fichier comp_strc.c dans VSC puis copier le code. La sauvegarde se fait par le raccourci CTRL+S.

Pour exécuter le code, cliquez sur le petit triangle en haut à droite et sélection l’option « Exécuter le fichier C/C++ » (l’autre option étant de déboguer) :

VSC va compiler le code et générer le comp_strc.exe. L’exécution se fait dans le terminal tout en bas :

Lors de la première exécution, VSC va créer un répertoire .vscode dans le répertoire de votre projet. Dans ce répertoire se trouve un fichier tasks.json qui permet de définir – entre autres – vos options de compilation dans le paramètres « args » (vous pouvez ajouter l’option -Wall par exemple).

Vous avez maintenant un magnifique environnement de développement en C sous Windows, parfaitement opérationnel. Je vous laisse découvrir Visual Studio Code, je reviendrai sur ses possibilités dans un article à venir (et notamment sur ses extension rétros).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *