3 - Configuration du projet, l'emplacement du compilateur OCaml
[fr]
[en]
15 septembre 2011, par Emmanuel Dieul
Un 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
Le 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.
Trois catégories d’éléments peuvent être configurés pour chaque profil de compilation :
- les librairies, qui peuvent être des librairies standard, des librairies présentes dans le projet ou des librairies externes
- les options de compilation
- 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
Pour 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 :
Les grammaires, Camlp4 et la compilation conditionnelle
Les 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.
La 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é.
|