Je me suis lancé dans la mise en place d'un nouveau système de compilation pour le source Metafor. Il s'agit de CMake, le système qui est utilisé pour VTK et que j'ai déjà utilisé pour la compilation de stp2e.
CMake est analogue à autoconf sous Unix mis à part qu'il marche aussi sous Windows et qu'il est beaucoup plus moderne. Pour ceux qui ne connaissent pas autoconf, ce type de programme permet de générer des makefiles à partir de modèles et de paramètres spécifiques à la machine sur laquelle on veut compiler. Ces paramètres peuvent être des options de compilation, l'emplacement de bibliothèques, des choix sur les sources à compiler, etc.
Jusqu'à présent, puisque autoconf ne fonctionnait pas sous Windows, Luc mettait à jour un projet Visual Studio qu'il distribuait à tout le monde. Ce projet était une sorte de copie des makefiles générés par autoconf sous Linux. Malheureusement, modifier le projet Visual Studio se fait à la main et vu la complexité croissante du code, il devient de plus en plus compliqué d'assurer une concordance parfaite entre ce qui est fait sous Linux ou Windows. De plus, puisque c'est une opération manuelle à travers une interface graphique, il est très difficile de détecter des fautes.
En résumé, les avantages de CMake sont nombreux:
qmake
n'est plus nécessaire sous Windows pour traiter la partie Qt de Metafor (qui s'est étendue aux libs de calcul depuis qu'on utilise les QSet
). Ceci facilitera énormément la gestion du projet si quelqu'un améliore l'interface graphique Qt.Actuellement, le travail n'est pas tout à fait fini (vous n'avez donc rien à faire!). Il ne fonctionne que sous Windows et l'exécutable n'est pas encore configuré pour pouvoir fonctionner correctement. Néanmoins, si certaines personnes veulent tester le système sur leur PC, qu'ils n'hésitent pas.
Procédure graphique:
CMake permet de séparer totalement le source des binaires (c'est pas obligatoire mais c'est recommandé). On va donc suivre cette manière de faire.
_WITH_GUI_
, _WITH_MKL_
, etc)Procédure automatique:
Comme vous pouvez le voir, la procédure de config est longue, surtout si CMake ne trouve pas automatiquement vos libs (sous Windows, il y a peu de chance qu'il y arrive). J'ai donc créé un fichier de config pour ma machine qui convient à tous ceux qui utilisent mes libs (Vinciane, Arnaud Collet et moi)
Sans le répertoire racine de oo_meta:
mkdir oo_metabin cd oo_metabin cmake -G "Visual Studio 9 2008 Win64" -C ..\oo_meta\profiles\garfield.cmake ..\oo_meta
et voilà, toutes les valeurs devraient être remplies et le projet créé! Si on veut à ce stade modifier une option, il est possible de lancer l'interface graphique.
L'idée est donc de faire un fichier de type garfield.cmake
pour tous les types de machine. On aurait par exemple un corto.cmake
pour les utilisateurs des libs de Luc. Les 3 lignes ci-dessus pourraient être facilement mises dans un petit fichier python qui se chargerait de déduire intelligemment la config à charger.
La suite:
Ajout de 2 tests du mailleur anisotrope
apps.qs.gen4aniso1
: flexion 3 ptsapps.qs.gen4aniso2
: pliage (tombé de bord)— Romain BOMAN 2010/06/06 09:08