France IOI
Développements en Caml sous Windows

Développement OCaml sous Windows
avec Crimson Editor

- Arthur Charguéraud -

Ce document décrit comment configurer simplement un ordinateur sous Windows pour pouvoir y développer des programmes en Caml efficacement.

Table des matières :
  1. Installation de Objective Caml,
  2. Principe d'une interface de développement intégré (IDE),
  3. Installation et configuration des outils de Crimson Editor,
  4. Développement en Ocaml sous EditPlus,
  5. Annexe : Entrée standard dans un fichier.
  6. Annexe : Résolution des problèmes.

Attention : pour pouvoir suivre à la lettre les instructions de configuration de Crimson, il est nécessaire d'installer les logiciels dans les dossiers spécifiés dans ce document. Si vous choisissez d'autres dossiers, il faudra adapter un peu.

Lisez de préférence ce document après avoir lu l'introduction du cours Caml pour débutants.

Comptez 15 minutes environ pour tout faire marcher.

Installation de Objective Caml

Procurez-vous la dernière version de Objective Caml sur la page de Caml à l'INRIA. Dans la section "Precompiled Binaries", à la rubrique "Windows", choisissez la version dénommée

  • en français : Native Win32 port based on the MinGW toolchain
  • en anglais : Port natif Win32 basé sur les outils MinGW

Si vous ne trouvez pas ou si le site officiel est inaccessible, essayez ce lien. (ce ne sera pas forcément la dernière version, mais ça ne changera rien pour vous).

Ensuite, installez la distribution Ocaml en lançant le fichier exécutable que vous venez de télécharger. Choisissez le dossier "C:\Program Files\Objective Caml\" pour suivre le tutoriel plus facilement. Ce dossier est d'ailleurs généralement proposé par défaut.

Principe de l'interface de développement intégré

Le processus de développement d'un programme est le suivant:

  1. Ecrire dans un document texte le source du programme,
  2. Traduire ce source en un programme (compilation).
  3. Executer le programme créé.

Pour la première phase, on a besoin d'un éditeur de texte, c'est-à-dire d'un logiciel permettant d'écrire et de modifier le fichier source. Comme éditeur, le bloc-notes Windows pourrait suffire en théorie, mais on a souvent besoin de plus de fonctionnalités (comme remplacer du texte, ou mettre les mots clés du langage en couleurs, etc). On utilise donc un véritable editeur de texte, adapté à la programmation.

Pour la seconde phase, on veut pouvoir compiler le programme. Pour cela, on utilise la combinaison des touches "Contrôle" et "1" (on note CTRL+1). Ce raccourci clavier permet de lancer la compilation. Le résultat de la compilation est affiché dans une zone de texte.

Pour la troisième phase, l'exécution du programme, on utilise la combinaison des touches "Contrôle" et "2" (soit CTRL+2). Une fenêtre MS-DOS apparaît pour dialoguer avec le programme: dans cet fenêtre, le programme peut afficher du texte, et l'utilisateur peut fournir du texte au programme. Lorsque le programme est terminé, il suffit d'appuyer sur une touche pour fermer la fenêtre.

Installation et Configuration de Crimson

Téléchargez Crimson Editor (1,19 Mo). Addresse du site officiel : www.crimsoneditor.com.

Installez le programme dans le dossier (généralement proposé par défaut) : C:\Program Files\Crimson Editor.

Lancez Crimson. Un fichier sera ouvert automatiquement.

Enregristrez ce fichier dans test.ml quelque part sur votre disque dur. Par exemple : Mes documents\Programmation\test.ml.

Maintenant on va configurer l'IDE. On va pour cela dans le menu Tools à "Conf. User Tools..."

La boite de dialogue suivante s'affiche :

Expliquons un peu à quoi correspondent toutes ces cases :

  • Menu Text : c'est le nom de l'outil que l'on veut créer.
  • Command : c'est la ligne de commande à effectuer.
  • Argument : c'est les paramètres que l'on donne au programme.
  • Initial Dir : c'est le dossier dans lequel on exécute le programme.
  • Hot Key : on l'ignore.
  • Close on exit : pour que la fenêtre MS-DOS se ferme automatiquement.
  • Capture output : pour ne pas ouvrir une fenêtre MS-DOS.
  • Use short filename : on l'ignore.
  • Save before execute : pour sauvegarder automatiquement les fichiers.

Commençons par configurer l'outil de compilation :

  • Menu Text : Compile
  • Command : C:\Program Files\Objective Caml\bin\ocamlc.exe
  • Argument : -o output.exe $(FileName)
  • Initial Dir : $(FileDir)
  • Capture output : coché
  • Save before execute : coché

Remarque : pour le chemin d'accès, on peut utiliser le bouton avec les trois petits points; pour les noms entre parenthèses et précédés d'un dollar, on peut utiliser le bouton avec la flèche vers la droite.

Ensuite, on configure l'outil d'exécution :

  • Menu Text : Execute
  • Command : output.exe
  • Argument :
  • Initial Dir : $(FileDir)
  • Close on exit : décoché
  • Capture output : décoché
  • Save before execute : coché

Dernière chose à faire : demander à Crimson d'afficher les numéros de ligne. Pour cela, on va sur General / Visual dans la même boîte de dialogue Préférences, et on coche la case "Show line numbers".

Développement en Ocaml sous Crimson

Voici en 5 étapes la fabrication d'un programme avec Crimson :

Etape 1 : Ouvrir Crimson et créer un nouveau fichier texte, dans le menu : File / New, ou bien avec le clavier : CTRL+N.

Etape 2 : Enregister le fichier source, avec une extension ".ml". Nommez-le par exemple "monsource.ml". Menu File / Save ou CTRL+S.

Etape 3 : Ecrire un programme. Tapez par exemple le code suivant :

print_string "hello";
print_newline();
sans oublier aucun caractère. Note : Le _ après les mots print (le underscore) s'obtient avec la touche 8 du clavier français.

Etape 4 : Compiler le programme. Au clavier : CTRL+1, ou par le menu Tools / Compile. Des messages s'affichent à cette étape 4. Si tout s'est bien passé, vous obtenenez le message "Terminated with exit code 0.". Tant que vous n'obtenez pas ce message, il est inutile d'essayer d'exécuter le programme, puisque le programe n'aura pas été créé.

Etape 5 : Exécuter le programme. Au clavier : CTRL+2, ou par le menu Tools / Execute. Vous devriez voir apparaître le message Hello dans une fenêtre MS-DOS.

Si ça ne compile pas : Si votre source n'est pas correct, un message d'erreur s'affichera. S'il existait auparavant, le fichier exécutable output.exe ne sera pas modifié. Voici un exemple de code ne compilant pas :

Annexe : Entrée standard par un fichier

On va rajouter un outil (associé à CTRL+3) avec lequel on peut exécuter un programme, et directement lui donner son entrée standard, ce qui évite d'avoir à la retaper à chaque fois.

Pour cela, on configure l'outil d'exécution avec entrée:

  • Menu Text : Execute sur input.txt
  • Command : output.exe
  • Argument : < input.txt
  • Initial Dir : $(FileDir)
  • Close on exit : décoché
  • Capture output : décoché
  • Save before execute : coché

Ensuite, on écrit notre programme normalement, et on le compile toujours avec CTRL+1. Remarque : dans l'image qui suit, les deux premières lignes contiennent des surdéfinitions de read_int et de read_float qu'il faut mettre en haut de tous les sources sur lesquels vous souhaitez utiliser cet outil CTRL+3. Exemple :

let read_int () = Scanf.scanf " %d" (fun x -> x);;
let read_float () = Scanf.scanf " %f" (fun x -> x);;

let x = read_int() in
let y = read_int() in
print_int y;
print_newline();
print_int x;
print_newline();

Ensuite, on crée un nouveau fichier nommé nécessairement input.txt. Dans ce fichier on écrit l'entrée du programme. On sauvegarde ce fichier, puis on fait CTRL+3.

Annexe : Résolution des problèmes

  • A la compilation, vous obtenez : File "c:\program files\objective caml\bin\ocamlc.exe" not found.
    Cela signifie qu'Objective Caml n'a pas été installé à cet endroit dossier. Soit vous n'avez pas installé Ocaml au bon endroit, soit vous n'avez pas tapé le bon chemin d'accès au moment de la configuration des outils.
  • A la compilation, vous obtenez : Fatal error: cannot open pervasives.cmi.
    Objective Caml a été installé, mais mal configuré. Réinstallez-le. Si ça ne marche toujours pas, c'est probablement que vous n'avez pas suffisement de privilèges sur la machine pour modifier les variables d'environnement. Contactez-moi dans ce cas.
  • A l'execution, vous obtenez : File "output.exe" not found.
    Le programme n'a pas été créé. Essayez de le compiler d'abord.
  • Le programme s'execute, mais n'affiche pas tout ce qu'il est censé afficher.
    C'est un problème de flux de caractères qui se corrige très facilement : il suffit de rajouter l'instruction print_newline(); tout à la fin du source.