OCaml Development Tools
Aperçu Copies d’écran Notes d’installation Téléchargement Tutoriel Prochaine version

3 - Configuration du projet, l'emplacement du compilateur OCaml

[fr] [en]
15 septembre 2011, par Emmanuel Dieul

PNGUn projet OCaml peut être configuré suivant plusieurs grandes catégories :

  • l’emplacement des sources et binaires
  • les profils de compilation
  • les cibles à produire (exécutables, librairies...)
  • les grammaires

Chaque projet possède sa propre configuration, qui est stockée dans les fichiers ".preferences.xml", à la racine du projet.

Chacune de ces grandes catégories a son impact sur l’autre :

  • les dossiers source indiquent aux profils de compilation quels fichiers doivent être compilés ; si un dossier source disparait, toutes les cibles et grammaires basées sur ces sources disparaissent également
  • les cibles et grammaires indiquent aux profils de compilation les produits à construire
  • le dossier binaire indiquent aux profils de compilation où les fichiers compilés seront à placer
  • ...

D’une manière plus générale et pour tous les projets de l’espace de travail, l’emplacement du compilateur OCaml peut aussi être paramétré.


L’emplacement des dossiers source et du dossier des binaires

PNGLe dossier des binaires est le dossier où seront placés :

  • tous les fichiers générés par ocamllex et ocamlyacc
  • tous les fichiers compilés par ocamlc ou ocamlopt

Dans ce dossier de binaires, chaque profil de compilation a son propre dossier, ce qui permet notamment la compilation séparée.

Enfin, les dossiers source définissent l’emplacement du code source à compiler. Ces dossiers peuvent être directement ou non sous le dossier du projet : ils seront, au final, affichés sous le projet. Seuls les fichiers contenus dans les dossiers source seront compilés. S’il existe des fichiers source contenus en dehors de ces dossiers, ils seront ignorés.

Les profils de compilation, la compilation séparée

Les profils de compilation (builder profiles) permettent de définir plusieurs manières de compiler les fichiers d’un projet. Il existe, pour tout projet, un profil de compilation qui lui est propre. Cependant, il est possible de définir des profils de compilation spécifiques. Cela permet d’obtenir, par exemple, à partir des mêmes sources, deux exécutables produits avec des options et/ou des librairies différentes :

  • system threads (-thread) contre virtual machine threads (-vmthread)
  • un exécutable de test (-g) et un exécutable distribué (-principal)
  • ...

Chaque profil de compilation a son espace de compilation propre, distinct de celui des autres profils.

PNGTrois catégories d’éléments peuvent être configurés pour chaque profil de compilation :

  1. les librairies, qui peuvent être des librairies standard, des librairies présentes dans le projet ou des librairies externes
  2. les options de compilation
  3. le mode bytecode ou natif

Des principes d’intégrité sont implémentés pour conserver une configuration cohérente :

  • les options qui sont incompatibles avec le mode de compilation (natif ou bytecode) ne sont pas sélectionnables (e.g. -vmthread)
  • les librairies sélectionnées sont nécessairement compatibles avec le mode de compilation

Enfin, par défaut, le profil de compilation projet est chargé de la compilation des fichiers. Cependant, lorsqu’un profil de compilation spécifique existe (par exemple pour compiler un exécutable), le profil de compilation projet ne compile pas les fichiers qui ont été compilés avec un autre profil de compilation, sauf s’ils sont nécessaire à la production d’une cible (exécutable, librairie...).

La production d’exécutables

PNGPour chaque exécutable, il suffit d’identifier plusieurs éléments :

  • son emplacement et son nom,
  • son fichier source principal,
  • son profil de compilation.

Ces exécutables seront produits automatiquement, à la fin du processus de compilation, lorsqu’un fichier source a été modifié ou que le projet a été nettoyé.

Ils pourront ensuite être exécutés via le gestionnaire des exécutions :

PNG

Les grammaires, Camlp4 et la compilation conditionnelle

PNGLes grammaires, qui permettent d’étendre le langage OCaml, sont aussi gérés dans ODT. Elles sont définies de la même manière qu’un exécutable.

PNGLa compilation de cette grammaire peut nécessiter un profil de compilation spécifique.

Une fois la grammaire compilée, ou si une grammaire standard est disponible, cette grammaire peut être utilisée, au travers des profils de compilation, via l’option "-pp".

L’exemple ci-contre illustre une compilation conditionnelle : "-DTAG" permet de tenir compte de la partie de code conditionnée par la présence de "TAG". Voir le manuel de Camlp4 pour plus d’informations.

L’utilisation de grammaires augmente cependant énormément les temps de compilation sous windows. Il faut donc utiliser l’option "-pp" avec précaution dans les profils de compilation.

Le fichier de préférences

Pour chaque projet OCaml, qu’il ait été configuré ou non, un fichier ".preferences.xml" existe à la racine du projet. Il contient toute la configuration du projet.

Il ne faut pas que ce fichier soit supprimé ; sinon, un fichier avec une configuration par défaut le remplacera à la prochaine ouverture du projet.

L’emplacement du compilateur OCaml

Une option est commune à tous les projets : l’emplacement du compilateur OCaml.

Par défaut, ce compilateur est cherché dans la variable d’environnement PATH. Cependant, sous MacOS, cette variable n’est pas entièrement disponible au lancement d’Eclipse. Quelques chemins standards sont donc gérés par défaut : /bin, /usr/local/bin et /usr/bin.

Si le compilateur est installé dans un chemin spécifique, il faut le préciser à ODT, via le menu "Window > Preferences > OCaml > Compiler".

Une fois le chemin précisé, il faut redémarrer Eclipse. Le compilateur sera alors trouvé et utilisé.



breves

Novembre 2013


ODT 3.0 livré : complétion de code et autres



Janvier 2013


ODT 2.3 livré : support d’OCaml 4.00



Avril 2012


ODT 2.2 livré : code pliable et indentation complète



Janvier 2012


ODT 2.1 livré : génération d’interfaces, libraries et projets référencés



Septembre 2011


ODT 2.0 livré : intégration de camlp4, compilation séparée et plus...



Décembre 2010


ODT 1.3.1 livré : support d’OCaml 3.12.0



Octobre 2010


ODT 1.3 livré : de nombreuses améliorations