L'outil de gestion de configuration CMT

Sommaire Introduction
L'outil CMT
Comment piloter CMT
Description des fichiers sources
Modification des options
Construction de librairies
Utilisation de produits externes
L'utilisation de CMT
Plus d'infos

Introduction

La configuration logicielle consiste (ceci est une définition assez sommaire) dans la description et la maîtrise (ou le contrôle) de tout ce qui constitue un projet logiciel. Ceci inclut des informations aussi diverses que : Par exemple, le simple fait de construire une application, même simple mais déjà composée de quelques modules sources, et utilisant quelques librairies (graphiques par exemple) devient vite fastidieux si l'on se contente d'enchaîner les commandes de compilation et d'édition de liens manuellement, surtout quand on doit mémoriser les options de compilations qui deviennent vite très complexes.

Le premier outil accessible est l'outil make qui, déjà, va permettre de décrire de façon très complète les éléments composant une application (en terme de fichiers sources, de librairies, de modules compilés à assembler, etc...). Cet outil sait détecter parmi toutes les actions possibles pour la reconstruction d'un produit logiciel, celles qui seront nécessaires après des modifications partielles des fichiers sources.

Néanmoins, l'outil make peut lui-même devenir très complexe à manipuler. En effet, il faut décrire dans un fichier texte appelé traditionnellement Makefile toutes les règles de dépendance entre les modules, puis toutes les actions à réaliser pour reconstituer chaque élément. La connaissance détaillée de toutes les options de compilation, de link etc.. reste en particulier nécessaires, et rien n'est prévu dans make en ce qui concerne la structuration d'un développement (où sont les sources, les résultats de compilation, les packages produits par d'autres personnes du même projet) ni pour gérer les informations spécifiques à une plateforme donnée.

Un certain nombre d'outils (commerciaux pour la plupart) existent dans quelques environnements pour répondre un peu mieux à ces questions. On peut citer MSVisual dans les environnements Windows, et, dans le monde Unix, de nombreux produits commerciaux fournissent des services comparables.

Nous allons considérer un produit (non commercial) appelé CMT, utilisé dans notre environnement de physique, qui permet d'automatiser sensiblement les processus de configuration. On pourra aussi lire la doc complète de ce produit.

L'outil CMT

Parmi les services fournis par cet outil, nous allons principalement considérer ici:

Comment piloter CMT

Chaque emplacement de travail (donc où l'on va produire une application par exemple) est appelé un package en terminologie CMT. Chaque package sera décrit par un fichier texte nommé requirements installé dans son répertoire cmt. CMT trouvera dans ce fichier toutes les informations dont il a besoin pour comprendre les éléments de configuration du produit. Nous allons maintenant décrire certaines de ces informations, celles le plus souvent utilisées.

Lorsque l'on a installé pour la première fois un tel fichier requirements dans un répertoire, définissant ainsi un package, il est nécessaire de configurer le package par la commande cmt config à exécuter localement, et une seule fois. Ceci produira un fichier Makefile universel (c.à.d qui restera inchangé quelles que soient les évolutions du package).

Lors des prochaines utilisations de l'outil make par la commande make, CMT sera utilisé de façon transparente pour regénérer automatiquement les paramètres de configuration appropriés de make.

Description des fichiers sources pour une application

Si l'on veut construire une application, on doit lui donner un nom (par exemple toto). Ce nom sera utilisé entre autres pour nommer le fichier executable (toto.exe).

application toto toto.cpp ../ailleurs/a.cpp -s=../lib x.cpp y.cpp z.cpp

Puis, on a besoin de préciser tous les fichiers sources qui vont être compilés puis assemblés pour fabriquer l'application. Ces fichiers sources peuvent être dans le répertoire propre du package (le répertoire courant) ou non. Dans l'exemple montré ici, nous avons :

Modification des options de compilation ou d'édition de lien

La configuration de l'outil make est réalisée grâce à des macros standardisées, chacune correspondant à un compilateur ou à un outil particulier. Pour le C++ (qui nous concerne au premier chef) nous pouvons considérer les macros cppflags et cpplinkflags.

Généralement, il s'agira d'augmenter ces macros, car elles ont déjà reçu une définition par les autres packages utilisés ou par CMT lui-même. Ceci est montré dans l'exemple suivant:

macro_append cppflags " -D__USE_STD_IOSTREAM "

Attention à observer scrupuleusement les majuscules et minuscules, et à bien incorporer un caractère espace avant l'option ajoutée (donc ici avant le -D...).

Construction de librairies

Une librairie permet de pré-compiler et pré-assembler des modules C++ afin que plusieurs applications puissent les utiliser sans avoir à les reconstruire systématiquement.

On définit une librairie par l'instruction suivante, à placer dans le fichier requirements, en lui donnant un nom et en décrivant ses fichiers sources (comme pour les aplications):

library event a.cpp b.cpp c.cpp

Puis, pour qu'une application (toto par exemple) utilise cette librairie, il est suffisant d'installer une macro dédiée ainsi:

macro totolinkopts " -L. -levent "

ce qui signifie dans cet exemple que l'application toto sera liée avec la librairie nommée event et localisée dans le répertoire courant (option -L.).

Déclaration de l'utilisation de produits externes

De nombreux packages externes, fournissant généralement des librairies spécialisées, peuvent être enregistrés sous CMT et donc être référencés très simplement grâce aux instructions suivantes:

use OPACS v3

use Ci v5r2

Chacune de ces instructions fournira l'accès automatique et transparents aux librairies fournies par ces packages.

L'utilisation de CMT

$> cd unRepertoireDeTravail

$> cmt create unPackage v1

$> cd unPackage/v1/cmt

$> vi ../src/...

$> vi requirements

$> sourse setup.sh

$> cmt make

L'utilisation de CMT

Pour plus d'infos, consulter le site web de cmt

Valid XHTML 1.0! Valid CSS!
Enseignement Lal<ens@lal.in2p3.fr>
Last modified: Tue Aug 12 15:32:52 CEST 2008