Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:futur:robo

This is an old revision of the document!


Commit

Portabilité

Le code ne compilait plus sous macOS et sous Windows-x86 (MinGW). Ces deux types de compilation ne sont pas testées dans la procédure de batterie et il faut donc régulièrement corriger les sources d'incompatibilité.

Sous macOS, le problème venait des nouveaux templates de Gaetan permettant d'effectuer une intégration (AdaptiveClenshawCurtisIntegratorTemplate et classes associées). Il y avait plusieurs problèmes dans ces fichiers liés à l'instanciation explicite de certaines instances. J'ai mid le code sous la forme de celui qui compile sans problème mais malgré ça, j'ai dû définir certaines fonctions “inline” pour que clang les retrouve. Je n'ai pas tout compris.

Ceci m'amène à conclure qu'il faut vraiment essayer de limiter l'utilisation des templates au minimum dans Metafor. C'est une vraie source de problème. Le problème des templates Metafor est qu'il s'agit souvent de templates un peu pourris dont une grande partie des fonctions doit être spécialisée pour un argument donné (dimension dans les éléments). Autrement dit, le template n'est valable que pour un nombre très restreint de paramètres (2D, 3D p expl) et en ajouter un nouveau nécessiterait la réimplémentation de plusieurs fonctions. Ne faites donc pas de nouveaux templates pour le plaisir d'en faire; c'est un vrai casse tête de rendre portable ce type de code.

Avec MinGW, le problème venait des nouvelles classes de Linesearch de Gaetan. Il y a beaucoup de trucs un peu louches dans ces classes: const double & au lieu de double, fonctions virtuelles dans des classes sans dérivation (ou l'inverse), double dérivations étonnantes, etc. ce qui posait problème était la spécification dllimport/dllexport de fonctions inline (ça n'a pas de sens). J'ai supprimé ces mots clefs. J'en ai profité pour remettre en forme ces fichiers (même l'indentation était pourrie).

J'ai vérifié la compilation sur fabulous, qui n'est pas testée elle non plus.

boman 2017/09/06 13:57

commit/futur/robo.1504699505.txt.gz · Last modified: 2017/09/06 14:05 by boman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki