From c910053d8b2fa12482b98a88da3202ec76beadea Mon Sep 17 00:00:00 2001
From: Antoine Lorence <antoine.lorence@insa-rennes.fr>
Date: Thu, 18 Dec 2014 10:47:53 +0100
Subject: [PATCH] Add file with additional information

---
 infos_complementaires.md | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 infos_complementaires.md

diff --git a/infos_complementaires.md b/infos_complementaires.md
new file mode 100644
index 0000000..ae6961d
--- /dev/null
+++ b/infos_complementaires.md
@@ -0,0 +1,33 @@
+# Informations
+
+## Compilation
+
+*ImageINSA* se compose de 4 modules de compilation:
+ 1. *ImageIn*, librairie de traitement d'images
+ 2. *GenericInterface*, interface graphitque pour manipuler les images
+ 3. *core*, librairie principale fournissant le coeur de métier de *ImageINSA*
+ 4. *ImageINSA*, executable final
+
+## Dépendances internes
+ - *GenericInterface* dépend de *ImageIn*
+ - *core* dépend de *ImageIn* et de *GenericInterface*
+ - *ImageINSA* dépend de *core*, de *ImageIn* et de *GenericInterface*
+
+## Contraintes
+
+*core* doit être compilée en tant que librairie dynamique (dll sous Windows), afin de pouvoir être réutilisée comme base pour la compilation de plugins additionnels à *ImageINSA*
+
+## Le problème
+
+Les dépendances entre les modules compliquent la compilation. Si *ImageIn* et *GenericInterface* sont des librairies statiques, et *core* une librairie dynamique, au moment du link de *ImageINSA*, plusieurs méthodes de *ImageIn* et *GenericInterface* sont définis en double (celles qui sont utilisées à la fois par *ImageINSA* et dans *core*).
+
+## Solution choisie
+
+Dans CMake, *ImageIn* et *GenericInterface* sont définies commes des librairies 'object'. Chaque fichier source est compilé, mais n'est pas linké. Le résultat est une liste de fichiers objets (*.obj sous Windows) qui peut être utilisée comme source pour la compilation de *core*. Le resultat est une librairie *core* qui est dynamique et qui contient l'intégralité de *ImageIn* et *GenericInterface*. Le link de *ImageINSA* ne repose plus sur *ImageIn* et *GenericInterface*, mais seulement sur *core*
+
+Voir les commits 86db68e9ffae de eiimage et 9ba87b46e de Detiq-T
+
+## Autres solutions possibles
+
+ - Faire en sorte que tous les modules soient des librairies dynamiques
+ - Réarchtecturer *ImageINSA* et refaire un découpage dont la logique suit les relations de dépendances entre les modules plutôt que l'historique du logiciel.
\ No newline at end of file
-- 
GitLab