]> Creatis software - crea.git/commitdiff
By Leonardo Florez
authorDaniel Gonzalez <daniel.gonzalez@creatis.insa-lyon.fr>
Wed, 29 May 2013 13:47:29 +0000 (15:47 +0200)
committerDaniel Gonzalez <daniel.gonzalez@creatis.insa-lyon.fr>
Wed, 29 May 2013 13:47:29 +0000 (15:47 +0200)
Bonjour à tous,

Aujourd'hui je me suis plongé dans la compilation des creaTools avec ITK 4.3 et VTK 5.10. La chose marque plutôt pas mal, mais il m'a fallu introduire des changements dans le code. J'ai fait ces ajouts avec du code "différentiel" (en utilisant le preprocesseur de C++ pour détecter la version d'ITK et donc laisser le code utilisable depuis itk 3 ou itk 4). Je vous joins un "patch" avec les changements (je n'ai pas accès git pour faire un "commit" depuis ici...). Pour appliquer le patch, il faut aller au repertoire avec les sources de creatools (là où il y a un repertoire par projet), copier ici le patch ci-joint et executer la commande: "patch -p1 < patch_creatools". L'explication des changements est:

- Il faut compiler ITK 4 avec l'option "ITK_USE_CONCEPT_CHECKING" en "OFF". La cause c'est le système de "demangling" des pointeurs vers des objets "itk::Image" utilisé dans bbitk, qui est peu trop générique. J'ai une idée pour le faire marcher d'une façon plus propre, mais il me faudrait quelques jours de plus.
- bbtk, bbfy: j'ai rajouté un "tag" xml: verbosePreprocessor. Cela pour permettre au programmeur de jouer avec le preprocesseur (#if et cie.) de C++ et avoir du code "différentiel" (par exemple, pour utiliser des filtres itk 3 qui n'existent plus dans itk 4).
- bbtk, BBTKConfigurePackage_src.cmake: la variable d'environnement LD_LIBRARY_PATH était effacée au moment d'invoquer bbfy, donc bbfy ne marchait plus.
- bbtk, bbitkDICOMSeriesFileNames.xml: le nouveau "tag" xml est utilisé ici (itkDICOMSeriesFileNames n'existe plus dans itk 3, dans itk 4 s'appelle itkGDCMSeriesFileNames).
- crea: CDMUtilities.*: un template n'était pas bien utilisé (une instantiation explicite était nécessaire).
- crea: modelCDMProjectsTreeNode.h: une méthode manquait.
- creaBruker/testBruker2Dicom: les librairies de BOOST doivent être enchaînées en dernier... Magique!
- creaImageIO/TestWxGimmickReaderDialog/CMakeLists.txt: il y manquait l'enchaînement vers les librairies ITK.
- creaImageIO/src/creaImageIOWxAnySimpleDlg.cpp: des classes itk 3 qui n'existent plus dans itk 4.

Voilà! J'espère que ça peut vous être utile.

Amicalement,

Leo

lib/creaDevManagerLib/CDMUtilities.cpp
lib/creaDevManagerLib/CDMUtilities.h
lib/creaDevManagerLib/modelCDMProjectsTreeNode.h

index cc64ee3e96acfa6376010b08e7adc64afc5b29bd..37f4deb9370e09b7bf2fc7b1130d5ce5ab8f6d1c 100644 (file)
 
 namespace CDMUtilities
 {
-  template <typename Container>
-  Container& splitter::split
-  (
-      Container& result,
-      const typename Container::value_type& s,
-      const typename Container::value_type& delimiters,
-      empties_t empties
-  )
-  {
-    result.clear();
-    size_t current;
-    size_t next = -1;
-    do
-      {
-        if (empties == no_empties)
-          {
-            next = s.find_first_not_of(delimiters, next + 1);
-            if (next == Container::value_type::npos)
-              {
-                break;
-              }
-            next -= 1;
-          }
-        current = next + 1;
-        next = s.find_first_of(delimiters, current);
-        result.push_back(s.substr(current, next - current));
-      }
-    while (next != Container::value_type::npos);
-    return result;
-  }
-
   const std::string fixPath(const std::string& path)
   {
     std::string pathFixed = "";
index 92fe3d0cbd409b2cb531711fefd252da8a77b1da..8ec696733767b7052c1cf099974a0e5644a013f9 100644 (file)
@@ -118,7 +118,29 @@ namespace CDMUtilities
         const typename Container::value_type& s,
         const typename Container::value_type& delimiters,
         empties_t empties = empties_ok
-    );
+      )
+      {
+        result.clear();
+        size_t current;
+        size_t next = -1;
+        do
+        {
+          if (empties == no_empties)
+          {
+            next = s.find_first_not_of(delimiters, next + 1);
+            if (next == Container::value_type::npos)
+            {
+              break;
+            }
+            next -= 1;
+          }
+          current = next + 1;
+          next = s.find_first_of(delimiters, current);
+          result.push_back(s.substr(current, next - current));
+        }
+        while (next != Container::value_type::npos);
+        return result;
+      }
   };
 
   /**
index 25ec95946782d38cca4df456279e455d0d339032..aa27b185f955fd9a0f605af50c17677cbb4600cb 100755 (executable)
@@ -42,7 +42,7 @@
 class modelCDMProjectsTreeNode
 {
 public:
-  modelCDMProjectsTreeNode();
+  modelCDMProjectsTreeNode() { }
   modelCDMProjectsTreeNode(std::string path, std::string name, unsigned char type, int level);
   ~modelCDMProjectsTreeNode();