Grâce à ma formation, à l’occasion d’un stage informatique intensif au LAL (Laboratoire de l’accelérateur linéaire, Orsay, France), j’ai découvert un logiciel dont j’ignorais totalement l’existance : CMT.
CMT est une technologie de gestion logicielle, sous la licence libre française CECILL, développée par des personnes du LAL justement. Cette définition m’avait laissé dans l’obscurité jusqu’à ce que l’on m’explique brièvement les fonctionnalités.
CMT permet de générer automatiquement un Makefile. Les makefiles sont toujours assez ardus à mettre en place, surtout quand on est déjà en train d’apprendre un langage et que l’on a pas la tête à ça. CMT rend donc user friendly la réalisation d’un makefile pour votre projet (C, C++ par ex.)
Mais CMT n’est pas qu’un remplaçant des autotools, c’est plus que ça; du moins de ce que je connais (mal) des autotools. Les principaux points forts semblent être la gestion du projet en « packages » ainsi que la compatibilité sur de très nombreuses plateformes jusqu’à de l’embarqué (LynxOS).
Comment ça marche en pratique ?
L’installation est un peu particulière. On récupère le tarball sur http://www.cmtsite.org/
tar xf CMTv1r20p20090520.tar.gz (je conseille de mettre de suite l’archive dans /opt, on va voir pourquoi)
cd CMT/v1r20p20090520/mgr/
./INSTALL
On nous dit ensuite de lancer source setup.sh make (ou make -j2 si vous avec un double coeur
)
Les scripts vont créer des alias et des variables d’environnements (les commandes env et alias en attesteront à défaut de la lecture des scripts). J’avoue ne pas m’être penché complètement sur le fonctionnement de la bête. Voila pourquoi je préfère mettre ça dans /opt dès le départ en attendant de comprendre mieux ce qui se passe, comme identifier toutes les configurations à effectuer. Un bon défis de packaging. J’avoue la doc légère sur ce point peu conventionnel (mais peut-être que j’ai mal creusé).
Et le projet dans tout ça ?
On lance la commande : cmt create Image v1 qui signifie : cmt, crée moi le projet Image en version 1 on a l’arborescence suivante :
Image/
`– v1
|– cmt
| |– Makefile
| |– cleanup.csh
| |– cleanup.sh
| |– requirements
| |– setup.csh
| `– setup.sh
`– src
_____________
package Image
include_dirs $(IMAGEROOT)/include
# Compilation
application readImage readImage.cpp image.cpp
# run the programm
action read $(bin)/readImage.exe
# Documentation
document doxygen doc -group=documentation TO=../doc
_____________
Le fichier est très simple, mais le programme aussi. Il comporte deux fichiers .cpp et les headers (fichier d’en-tête) sont dans le répertoire include.
On définit une action « read » qui permettra de lancer simplement le programme à l’aide de la commande cmt read. (A noter que CMT ajoute l’extension .exe à l’executable produit). On pourra donc utiliser avec profit un cmt make && cmt read
Enfin, une documentation Doxygen est générée dans un répertoire doc.
Voila pour le tour du propriétaire. Durant le stage, on n’a pas vraiment creusé CMT (ni les autres outils que l’on nous a introduit), il est donc difficile pour moi de dire à quel point ce logiciel est puissant, mais quoi qu’il en soit, il est méconnu et méritait d’être présenté. Peut-être que des connaisseurs des autotools pourront me donner un avis plus éclairé sur la question ? A t-il encore un avantage avec l’utilisation de qmake avec Qt ? Quoiqu’il en soit, je vais devoir commencer un petit projet en C ou C++ sous peu, ça sera une bonne occasion de me frotter un peu plus à CMT.
François (alias Spip).
http://www.cmtsite.org/ : le site du projet avec une partie documentation.
http://ens.lal.in2p3.fr/index.html/Html/CMT.html : la (trop ?) courte introduction du stage.